You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by cc...@apache.org on 2026/05/22 19:19:30 UTC

(hbase) branch HBASE-29688/varhandle updated (7d675fc5fac -> 366f4d90d63)

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

charlesconnell pushed a change to branch HBASE-29688/varhandle
in repository https://gitbox.apache.org/repos/asf/hbase.git


 discard 7d675fc5fac fix logic bug
    omit 12aa92f8950 Remove many uses of Unsafe
     add 07c2b5bff4b HBASE-29679: Suppress stack trace in RpcThrottlingException (#7403)
     add a47fa6a448f HBASE-29461 Alphabetize the list of variables that can be dynamically configured (#7165)
     add 1d5649c4634 HBASE-29690 Correct typo in TableReplicationQueueStorage.removeAllQueues exception message (#7420)
     add 305951ec2ff HBASE-29651 Bump jruby to 9.4.14.0 to fix multiple CVEs (#7405)
     add f800a13a357 HBASE-27126 Support multi-threads cleaner for MOB files (#5833)
     add bc54a7e4059 HBASE-29662 - Avoid regionDir/tableDir creation as part of .regioninfo file creation in HRegion initialize (#7406)
     add eae219812ad HBASE-29686 Compatible issue of HFileOutputFormat2#configureRemoteCluster (#7415)
     add 9c165888f1f HBASE-29667 Correct block priority to SINGLE on the first write to the bucket cache (#7399)
     add 8ef271f8373 [ADDENDUM] HBASE-29223 Fix TestMasterStatusUtil (#7416)
     add e2e2676a104 HBASE-29700 Always close RPC servers in AbstractTestIPC (#7434)
     add 6e85f12f690 HBASE-29703 Remove duplicate calls to withNextBlockOnDiskSize (#7440)
     add 33c4bdca5b3 HBASE-29702 Remove shade plugin from hbase-protocol-shaded (#7438)
     add 20a62c8743e HBASE-29704 Replace unsupported forkMode failsafe parameter in hbase-it (#7441)
     add d41d5c1e2dd HBASE-29701 Update README.txt in hbase-protocol-shaded (#7443)
     add 069e3a83365 HBASE-29138 Add surefire jdk17 options in windows profile also (#6711)
     add 8fbcb9da601 HBASE-29697 Add a listAllPeerIds methd to ReplicationQueueStorage (#7429)
     add 59bd6b2bef6 HBASE-29033 Add a shell command for inspecting the state of enable/disable_rpc_throttle (#7448)
     add c9ecf378248 HBASE-29568 - Allow for a configurable grace period when using Time Based Priority  (#7425)
     add 290ae1e9f5d HBASE-29707 Fix region cache % metrics miss calculation (#7451)
     add bdf7c0f9b1b HBASE-29711 Update downloads.xml for release 2.5.13
     add 3472b8f462b HBASE-29712 Update downloads.xml for release 2.6.4
     add 7e329b3b9d9 Amend HBASE-29711 Update downloads.xml for release 2.5.13; fix month
     add 6cc94b66afd Amend HBASE-29712 Update downloads.xml for release 2.6.4; fix month
     add 3c60edca7e6 Amend HBASE-29711 and HBASE-29712; fix link text for compat report
     add b8d803c0f11 HBASE-29714 Increase DEFAULT_RS_REMOTE_PROC_RETRY_LIMIT to 10 (#7466)
     add ddbad74d8db HBASE-29132 [REST] Add missing Query Parameters to the trace log in TableResource (#6704)
     add 4ba9b46c774 HBASE-29596 Migrate Canary Status Jamon page back to JSP (#7390)
     add 3779a6ed66c HBASE-29145 Table Stats shows store file size as zero always for hbae:meta table (#6716)
     add 100cd23406a HBASE-29698 Correct log message in ReplicationSourceShipper.clearWALEntryBatch (#7431)
     add 4b44bb709c6 HBASE-29725: Refactor the testScan method of TestDefaultMemStore (#7473)
     add e04c4d79359 HBASE-29731 Add L1 and L2 cache hit/miss caching metrics (#7482)
     add 7d604d44653 HBASE-28158 Decouple RIT list management from TRSP (#7375)
     add 0d031a0a299 HBASE-29709 NPE may occur when compacting table via RawAsyncHBaseAdmin (#7461)
     add b5169d86d42 HBASE-29689 Upgrade the website (#7419)
     add db25deefcfa HBASE-29727 Introduce a String pool for repeating filename, region and cf string fields in BlockCacheKey (#7477)
     add 6d342cc2e0c HBASE-29695: Fix typo in RestoreRequest's "Builder.withOvewrite()" method (#7508)
     add 7e96a90d23a [ADDENDUM] HBASE-29689 Ignore JSON files in RAT check, exclude node_modules from spotless check (#7507)
     add f9e35368269 Bump glob from 10.4.5 to 10.5.0 in /hbase-website (#7498)
     add 6a53c6e0844 HBASE-29745 Bump express from 4.21.2 to 4.22.1 in /hbase-website (#7499)
     add ce8edeb60bd Bump vite from 7.1.10 to 7.2.6 in /hbase-website (#7502)
     add 7ba47bd77b6 Revert "Bump vite from 7.1.10 to 7.2.6 in /hbase-website (#7502)"
     add 9ae1f089a9e Revert "Bump glob from 10.4.5 to 10.5.0 in /hbase-website (#7498)"
     add f5578ebef3a HBASE-29741 Bump glob from 10.4.5 to 10.5.0 in /hbase-website (#7521)
     add 3653e327392 HBASE-29746 Bump vite from 7.1.10 to 7.2.6 in /hbase-website (#7520)
     add 593d3ab63a5 HBASE-29747 Bump tar from 7.5.1 to 7.5.2 in /hbase-website (#7501)
     add 769705aa037 HBASE-29748 Bump js-yaml from 4.1.0 to 4.1.1 in /hbase-website (#7500)
     add c10b93c8e31 HBASE-29749 Bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /hbase-website (#7497)
     add 263f133d26b HBASE-29750 Bump urllib3 from 2.5.0 to 2.6.0 in /dev-support/git-jira-release-audit (#7525)
     add 688b5745aad HBASE-29740 Upgrade lz4-java to 1.8.1+ (#7513)
     add a2a35aaa68e HBASE-28158 Addendum use equals instead of == (#7526)
     add 27a2802f282 HBASE-29753 [hbase-operator-tools] Add hbase-operator-tools 1.3.0 to download page (#7527)
     add 6ace9b89595 HBASE-29645 AsyncBufferedMutatorImpl concurrency improvement
     add ce6a70cd695 HBASE-28158 Addendum fix spotless issue
     add dd9e37acb26 HBASE-29743 Fix typos in documentation for BulkLoadObserver (#7524)
     add b8322ce02e3 [ADDENDUM] HBASE-29689 Use `mvn site` for building the website (#7522)
     add 07de86938c5 HBASE-29032 Document RPC throttle toggle commands (#7515)
     add 04b293ccf0c HBASE-29763 Implement co-processor host for client-meta service (#7533)
     add 168bd520926 HBASE-29767 Fix IOTimePerHit NaN issue in BucketCacheStats (#7535)
     add f3a30012d9d HBASE-29759 TestAsyncTableScan fails with tracing assert error (#7538)
     add 8b17149a673 HBASE-29526 Dynamic configuration not working for coprocessor (#7514)
     add dcb72cfee3e HBASE-29501 IOException in SerialReplicationChecker.canPush causes entries to be pushed out of order
     add 0f6bbde6a8b HBASE-29771 TestThreadHandlerUsageQuota fails on flaky dashboard (#7541)
     add 9805ddc7680 HBASE-29729 Add per-region table descriptor hash to regionServer JMX Metrics (#7481)
     add 079b942face HBASE-29760 TestIncrementalBackup fails 100% on flaky dashboard (#7546)
     add fe9338a87b5 HBASE-29759 TestAsyncTableScan fails with tracing assert error (addendum) (#7557)
     add 7ef359b7ffc HBASE-29744: Data loss scenario for WAL files belonging to RS added between backups (#7523)
     add 6c10063bd09 HBASE-29732 Add hbase.rs.evictblocksonsplit to UI and CacheConfig logs (#7483)
     add 7f1f81aea3e HBASE-29586 Setting hbase.oldwals.cleaner.thread.size to negative value will throw IllegalArgumentException (#7293)
     add c6c83dcd113 HBASE-23644 Thrift2 DemoClient.py is not running (#7530)
     add e2e8b012c33 HBASE-29761: The HBase UI's Debug Dump is not redacting sensitive information (#7545)
     add d892a49e948 HBASE-29783 Fix flaky TestVerifyBucketCacheFile.testRetrieveFromFile test (#7561)
     add 4fdd23fe5d7 HBASE-29792 Bump org.apache.logging.log4j:log4j-core from 2.17.2 to 2.25.3 (#7570)
     add 4871bb4d36c HBASE-29788 Bump the version for Maven Project Info Reports Plugin (#7572)
     add 1c2025cf073 HBASE-29794 Only exclude tests when its failure rate above a threshold (#7574)
     add 1a3e371ca0a HBASE-29795 RegionServer abort because of NPE when closing compacted store file (#7576)
     add a2177d787cc HBASE-29706 Modify table with lazy mode should pass if coprocessors have not changed (#7575)
     add a5485191e64 HBASE-29794 Addendum fix exclude logic (#7586)
     add bd8dd1ae746 HBASE-29799 TestLargeClusterBalancingXXX should use MockMapping (#7587)
     add 2ec2d750579 HBASE-29742 Compaction scan returns single cells instead of rows after 10MB (#7562)
     add add6f22a6e4 HBASE-29797 Should not create wal directory when creating WAL instance (#7585)
     add 5ed7cd7e74a HBASE-29775 Allow inspecting log levels in Master UI in read-only mode (#7540)
     add 6e14c22aae2 HBASE-29782 Expose public Admin API to reopen table regions without moving (#7563)
     add 7f371cb754a HBASE-29796 Allow sleepForRetry replication config to be overridden by replication peers (#7577)
     add 3604b44b299 HBASE-29808 Simplify backup history retrieval (#7595)
     add e4de9c905fd HBASE-29810 Polish TestFileChangeWatcher (#7600)
     add de9c6ce9405 HBASE-29812 Bump qs and valibot to fix high security vulnerability in hbase-website (#7606)
     add 5bf96143177 HBASE-29793 TestDefaultHandlerUsageQuota fails 100% on flaky dashboard (#7573)
     add a1524debe13 HBASE-29813 Bump urllib3 from 2.6.0 to 2.6.3 in /dev-support/git-jira-release-audit (#7605)
     add 032d6096e9e HBASE-29757 Re-build mvn site when site related sources are changed (#7608)
     add 9e3b53cfcb1 HBASE-29817 Stop retrying on DoNotRetryIOException when waiting procedure result (#7610)
     add f35268aecfb HBASE-29818 Bump react-router from 7.9.4 to 7.12.0 in /hbase-website (#7609)
     add d11ee6a4586 HBASE-29802 NPE when shutting down mini cluster cause tests hang (#7604)
     add b54cb7db6df HBASE-29822 Add API surface and refactoring for key management feature (HBASE-29368) (#7584)
     add 935d24611b8 HBASE-29821 Fix maven-source-plugin duplicate jar failure (#7616)
     add 119c0ced73e HBASE-29819 Upgrade hbase-asyncfs to use junit5 (#7615)
     add e0c7b80e565 HBASE-29765 Make client connection header attributes configurable (#7553)
     add 41ce34a0ad7 HBASE-29764 Make client connection headers accessible inside co-processors (#7550)
     add 19c9d33cf2b HBASE-29144 Client request fails for KERBEROS with RpcConnectionRegistry (#7588)
     add cf9aa360a0c HBASE-29787 Run Yetus General Checks as a GitHub Action
     add 3e70070d3f0 HBASE-29829 Pagination support for Hide Old Comments in PRs
     add 2c8d1c00730 HBASE-29828 Upgrade TestIPC related tests to junit5 (#7626)
     add a07d8b52b79 HBASE-29770 Exclude commons-logging from HBase (#7539)
     add da824c8453c HBASE-29820 Bump the syntax of velocity template to align with velocity 2.x syntax (#7614)
     add ff8420095e2 HBASE-29569: Implement a built-in TieringValueProvider for parsing the date value from the rowkey (#7593)
     add 6ae2929cf7a HBASE-29787 Run Yetus General Checks as a GitHub Action (addendum) (#7638)
     add 2741727d74e HBASE-29820 Bump the syntax of velocity template to align with velocity 2.x syntax (addendum: also update bundled_hbase-bootstrap) (#7641)
     add 6fa0d7185a1 HBASE-29836 Add org.bouncycastle:bcpkix-jdk18on as explicit test dependency to hbase-http (#7649)
     add 1e6768f4188 HBASE-29830 Manage org.bouncycastle:bcutil-jdk18on version (#7627)
     add bd930ce31c8 HBASE-29783 Fix flaky TestVerifyBucketCacheFile.testRetrieveFromFile … (#7613)
     add 516b001518b HBASE-29833: Fix dead links in README
     add df70b5a582c HBASE-29835: Fix typos and inconsistencies in CacheAwareLoadBalancer (#7644)
     add a13d7f2ebec HBASE-29844 Upgrade hbase-metrics to use junit5 (#7654)
     add 881af2c81ef HBASE-29840 Bump tar from 7.5.2 to 7.5.3 in /hbase-website (#7640)
     add 6b6b129d9df HBASE-29847 Bump tar from 7.5.2 to 7.5.6 in /hbase-website (#7656)
     add 3f5a44a6c31 HBASE-29848 Bump lodash from 4.17.21 to 4.17.23 in /hbase-website (#7657)
     add b641364e537 HBASE-29851 Add more directories to yetus skip-dirs (#7670)
     add 30c42a87485 HBASE-29845 Description of the hbase:slowlog is not displayed correctly (#7655)
     add c770b92436f HBASE-29141 Calculate default maxQueueLength call queues correctly (#7490)
     add 2c3a0444ec6 HBASE-29854 Add osgi annotations dependency when generating javadoc (#7681)
     add e2a2fb73962 HBASE-29457 thrift1/DemoClient.py is not running (#7529)
     add 0fb1f3b54cc HBASE-29758 Running the thrift and thrift2 help commands via the shell will throw an ExitCodeException (#7532)
     add 5e499c2d9b8 Adding Dieter De Paepe as developer
     add 4ced4d6d6e2 Bump tar from 7.5.6 to 7.5.7 in /hbase-website (#7691)
     add aa97fbe7a27 HBASE-29866 Generate job summary for our yetus check github action (#7699)
     add 9e8bdf49888 HBASE-29857 better handling NPE in BucketCache  (#7685)
     add 4411cde5a83 HBASE-29858 Upgrade hbase-rest to use junit5 (#7686)
     add 27984c34cfd HBASE-29867 Promote some medium tests to large tests (#7701)
     add 1079c60618a Revert "Bump tar from 7.5.6 to 7.5.7 in /hbase-website (#7691)"
     add 3ff9ea08586 HBASE-29861 Bump tar from 7.5.6 to 7.5.7 in /hbase-website (#7691)
     add 5c12752138f HBASE-29859 Initialization log for DataTieringManager is incorrect (#7688)
     add d3a45663393 HBASE-29838 Run Hadoop Check as a GitHub Action
     add 4ba1c366a3e HBASE-29869 Upgrade hbase-balancer to use junit5 (#7716)
     add 2064b57bbca HBASE-29877. Introduce new LTT parameter --timeline to control timeline consistency in read operations (#7723)
     add aae6ba2b521 HBASE-29888 GitHub Actions job summary should show which tests failed (#7735)
     add c68f00eae98 HBASE-29892 Bump cryptography in /dev-support/git-jira-release-audit (#7731)
     add d0a57aa147d HBASE-29876 Upgrade hbase-shell to use junit5 (#7721)
     add 4ee0f4520ac HBASE-29879 Upgrade hbase-procedure to use junit5 (#7727)
     add 71ba6b0ef3d HBASE-29873 Improve the job summary for unit check (#7725)
     add 20df93e91ef HBASE-29869 Upgrade hbase-balancer to use junit5 (addendum) (#7744)
     add 9788d694570 HBASE-29868 Can not start mini dfs cluster when building against hadoop 3.3.x (#7707)
     add acc02b1a8c3 HBASE-29897 Bump org.apache.avro:avro from 1.11.4 to 1.11.5 (#7754)
     add 2152b90dbf5 HBASE-29870 Correct the UI Column name from Stats to State in rsgroup.jsp (#7718)
     add b2715d6e1be HBASE-29896 Raw scan incorrectly skips cells expired by cell-level TTL (#7749)
     add ad5bf7f1120 HBASE-29562 Add RegionServer Metrics for excluded DataNodes (#7260)
     add e146491ba0f HBASE-29900 Correct logger initialization under hbase-procedure (#7757)
     add 5ef06c1dfc0 HBASE-29885 Enable Disabled UT TestNamespacesInstanceResource.testInvalidNamespacePostsAndPuts (#7732)
     add 3c53f11c62a HBASE-29906 Bump qs from 6.14.1 to 6.14.2 in /hbase-website (#7747)
     add ed04e2e1fe5 HBASE-29846 Fix backup history ordering
     add a39cbd81a88 HBASE-29898 Upgrade hbase-replication to use junit5 (#7755)
     add b0a649d170a HBASE-29898 Addendum remove junit-vintage completely in hbase-replication
     add 76abc6bdca9 HBASE-29903 hbtop should display default replica id (#7760)
     add 5c3e91cbeff HBASE-29908 Bump tar from 7.5.7 to 7.5.9 in /hbase-website (#7766)
     add 4be0c5ecd49 HBASE-29721 Add validation for Mutations without column families (#7469)
     add 17643bd4814 HBASE-29462 Add undocumented variables to the list of dynamically configurable variables (#7728)
     add 73157a2c033 HBASE-29901 Upgrade hbase-zookeeper to use junit5 (#7758)
     add 26fdd25071a HBASE-29886 list_namespace will throw instance vars on non-persistent Java type warning (#7733)
     add f008d014650 HBASE-29887 Upgrade hbase-hbtop to use junit5 (#7734)
     add 6724289abdc HBASE-29899 TestRowStatisticsCompactionObserver fails with NPE (#7756)
     add ae49b6fbfc4 HBASE-29902 Upgrade hbase-thrift to use junit5 (#7759)
     add c4020c94f4d HBASE-28985 Fix memStoreSize metric for a table and add heap and off-heap size metrics (#6486)
     add 51d94c26144 HBASE-29916 Correct alter_async help text examples (#7784)
     add 35493332654 HBASE-29871 During WAL write times out add DataNode address in. the exception message (#7719)
     add 6b3bc277c7f HBASE-29911 Upgrade hbase-examples to use junit5 (#7776)
     add a444fc509c3 HBASE-28913 LoadBalancerPerformanceEvaluation fails with NPE (#7745)
     add 2ac4974afab HBASE-29910 Upgrade hbase-client to use junit5 (#7773)
     add e8841277731 HBASE-29680 Addendum set JAVA17_HOME before spotless (#7771)
     add 215d1019608 HBASE-28913 LoadBalancerPerformanceEvaluation fails with NPE (addendum) (#7790)
     add 7d8f66ca622 HBASE-29910 Upgrade hbase-client to use junit5 (addendum) (#7793)
     add 80303ee66b6 HBASE-29919 Test case TestSecureIPC#testRpcServerDisallowFallbackToSimpleAuth failed (#7794)
     add 64be26f0749 HBASE-29915 Rewrite TestMultiRowResource and TestSchemaResource (#7783)
     add ae8aefcd601 HBASE-29843 HBaseRPCController.setPriority(final TableName tn) is never called on branch-3+ (#7692)
     add e2cfd2c8cfa HBASE-29874 Removing the useless parameters from ScanQueryMatcher.isCellTTLExpired (#7720)
     add 01f93dbf6ad HBASE-29907 ROWCOL bloom filter + StoreScanner.trySkipToNextColumn can surface out-of-order cells, causing read failure “isDelete failed” (#7764)
     add 41d415545ac HBASE-29862 Test case TestClearRegionBlockCache#testClearBlockCache failed (#7697)
     add d070437f717 HBASE-29931 Test case TestRpcControllerFactory#testCountController failed (#7809)
     add a4ce03a3548 HASE-29928 Bump io.airlift:aircompressor from 0.27 to 2.0.3 (#7796)
     add cf3b875a390 Revert "HASE-29928 Bump io.airlift:aircompressor from 0.27 to 2.0.3 (#7796)"
     add 7240af908e2 HBASE-29928 Bump io.airlift:aircompressor from 0.27 to 2.0.3 (#7796)
     add 2fa4801faee HBASE-29948 Bump rollup from 4.52.4 to 4.59.0 in /hbase-website (#7824)
     add a1b96ab69f9 HBASE-29951 Bump minimatch in /hbase-website (#7819)
     add 8021eedabba HBASE-29878 Improve the Documentation UI (#7722)
     add ac88f8ac08a HBASE-29953 Link is broken after upgrading the Documentation UI (#7837)
     add 7fcd7c1045d HBASE-29878 Improve the Documentation UI (addendum)
     add af9d37e342f HBASE-29918 Upgrade hbase-diagnostics to use junit5 (#7788)
     add 9cf99a49a9f HBASE-29927 Upgrade hbase-external-blockcache to use junit5 (#7802)
     add 27ee7ec515a HBASE-29932 Upgrade hbase-http to use junit5 (#7810)
     add 47e9ef864f0 HBASE-29926 Upgrade hbase-hadoop-compat to use junit5 (#7800)
     add d5ef81a6ad8 HBASE-29878 Improve the Documentation UI (addendum) (#7842)
     add d747d57cc74 HBASE-29935 Update copyright notices year to 2026 (#7812)
     add 2379189cc76 HBASE-29952 Clean up MathJax URI workaround from dev-support/jenkins-scripts/generate-hbase-website.sh (#7838)
     add 1116dd13063 HBASE-29930 Separate packaging and integration check in nightly job to new jenkins job (#7843)
     add 768ddd2e006 HBASE-29878 Install Playwright dependencies in the Docker image used by Yetus (#7849)
     add 26f9f0b1657 HBASE-29834 MILLIS_BETWEEN_NEXTS metric is not updated on branch-3+ (#7660)
     add a568670ec65 HBASE-29934 Quota Info in Table Attributes should display more clearly (#7811)
     add 56c5c9ee7e7 HBASE-29937 Upgrade hbase-metrics-api to use junit5 (#7816)
     add 6d36008d196 HBASE-29938 Upgrade hbase-it to use junit5 (#7817)
     add ac62af67304 HBASE-29939 Upgrade hbase-logging to use junit5 (#7821)
     add 54123b33155 HBASE-29940 GC Collector stats can't be displayed properly in JDK21 (#7822)
     add ba26e8107cb Bump minimatch and serve in /hbase-website (#7851)
     add 7f8cdbcf331 Revert "Bump minimatch and serve in /hbase-website (#7851)"
     add 2fd6f78f792 HBASE-29878 Improve the Documentation UI (addendum) (#7853)
     add 29e1fe3f7cf HBASE-29893 Add zizmor for GitHub Actions workflows security analysis (#7742)
     add 34104a7a147 HBASE-29963 Bump minimatch and serve in /hbase-website (#7868)
     add ca0f586c06d HBASE-29973 Bump tar from 7.5.9 to 7.5.10 in /hbase-website (#7860)
     add c548c2f6f2e HBASE-29777 Slow and Large Response RPC StartTime in SlowLog Operation Details page is incorrect (#7548)
     add 531f91c436a HBASE-28601 Enable setting memstore on-heap sizes in bytes (#7726)
     add 8d895999583 HBASE-29967 Upgrade hbase-backup to use junit5 (#7859)
     add 418a3a6450f HBASE-29979 Remove JUnit5 related dependencies in hbase-protocol-shaded (#7885)
     add 7f1ea6aae4b HBASE-29966 Fix race in FlushRegionProcedure and rewrite TestAcidGuarantees (#7886)
     add 8af9d1c2473 HBASE-29878 Add missing footnotes (addendum) (#7878)
     add aa02da894f7 HBASE-29977 TestFSUtils fails with class not found (#7879)
     add 598600e73b5 HBASE-29800 WAL logs are unprotected during first full backup
     add 1d429bcef10 HBASE-29980 Polish jenkinsfiles after splitting integration test out (#7889)
     add 33d370b3f9a HBASE-29949 Downgrade info log in GlobalMetricRegistriesAdapter (#7831)
     add 832e68e5be0 HBASE-29807 Depend on jcip-annotations explicitly (#7592)
     add 975aec8fc49 HBASE-29954 Support magic links to PR and JIRA in IDEA (#7841)
     add d452abe0949 HBASE-29878 Improve the Documentation UI (addendum) - Fix 504 (Outdated Optimize Dep) error (#7896)
     add cb3432589f3 HBASE-29978 Remove redundant imports in regionserver.jsp file (#7880)
     add 48bb046ba71 HBASE-29983 Add support for hbase-thirdparty to the hbase-vote script (#7898)
     add 49aa4105da8 HBASE-29985 Bump org.apache.zookeeper:zookeeper from 3.8.4 to 3.8.6 (#7890)
     add 1606be719c7 HBASE-29982 Upgrade TestTags to JUnit5 and polish the code (#7897)
     add 3c8191180e9 Add liuxiao to the developer list (#7908)
     add b45be3a6305 HBASE-29969 Bump lz4-java 1.10.4 (#7865)
     add 8a1a901ba60 HBASE-29986 Bump tar from 7.5.10 to 7.5.11 in /hbase-website (#7906)
     add 1830859c05c HBASE-29878 Improve the Documentation UI (addendum) - Fix 504 (Outdated Optimize Dep) error 2 (#7914)
     add ce71133452f HBASE-29971 Upgrade to hbase-thirdparty 4.1.13 (#7869)
     add e4f9c65e80d HBASE-29987 Replication position corruption when WAL file switch detected in ReplicationSourceWALReader run loop (#7909)
     add 71e8c536a06 HBASE-29955 HMaster getting aborted due to NPE while creating snapshot for invalid table name (#7848)
     add 5cbdd4fa15b HBASE-29988 Upgrade hbase-archetypes to use junit5 (#7910)
     add bb2066fe9ab Revert "HBASE-29988 Upgrade hbase-archetypes to use junit5 (#7910)" (#7924)
     add 02bcc66103e HBASE-29988 Upgrade hbase-archetypes to use junit5 (#7925)
     add b0f33b0403a HBASE-29990 Upgrade deprecated GitHub Actions versions (#7915)
     add b6e258e4959 HBASE-29933: update_all_config hangs indefinitely when balancing even… (#7900)
     add 34c5a93465d HBASE-29878 Improve the Documentation UI (addendum) - Yetus refguide check (#7888)
     add 545d85bb67b HBASE-29997 Bump pyjwt from 2.4.0 to 2.12.0 in /dev-support/git-jira-release-audit (#7936)
     add 4c5fdfdaae5 HBASE-29981 Upgrade hbase-endpoint to use junit5 (#7887)
     add 231fee96c7b HBASE-29994 Separate backwards compatibility checks to a new jenkins job (#7937)
     add d610044306b HBASE-29999 Update the download links in the README (#7942)
     add 25d42b913c8 HBASE-29921 Bump default hadoop 3 version to 3.4.3 (#7803)
     add 00936bf712b HBASE-30002 Rewrite TestExportSnapshot related UTs (#7945)
     add 15da56373d7 HBASE-30002 Addendum fix some style issues
     add 9fe9593b5da HBASE-29922 Change hadoop check versions after supporting hadoop 3.4.3 (#7943)
     add 40edced4127 HBASE-30002 Addendum remove Assert usage
     add 7b081327dc8 HBASE-30005 Fix 1 high (flatted), 1 moderate (ajv) CVE in website dependencies (#7954)
     add 4595f250dda HBASE-30006 Update event URLs to use HTTPS (#7953)
     add 88ffeae34f0 HBASE-29950 Add a shell command for reopen table regions (#7832)
     add c78724ad40c HBASE-30009 Copy ref guide pdfs to build output directory after building site (#7958)
     add 0d8613bea5c HBASE-29923 Polish the nightly jenkins file (#7944)
     add c5e5d51e044 HBASE-30004 Implement a new generate web site jenkins job (#7959)
     add 86c05c48141 HBASE-30015 Bump flatted from 3.4.1 to 3.4.2 in /hbase-website (#7965)
     add 413233dbc53 HBASE-30010 Edit on GitHub link Not Found (#7961)
     add 3212f09814d HBASE-30000 testCompactionWithCorruptBlock fails on branch-2.5 (#7962)
     add c4a94f12d60 HBASE-29989 Update the implementation of splitting in the documentation (#7911)
     add 9e0f008deef HBASE-30013 Update documentation links to point to new docs (#7963)
     add 201c0d4690a HBASE-30017 Links lead to localhost in generated PDF docs (#7976)
     add a4280d89f02 HBASE-29947 Improve CopyTable usage instructions for copying between secure and non-secure clusters (#7829)
     add ed196badcdf HBASE-30028 Bump io.opentelemetry.javaagent:opentelemetry-javaagent (#7977)
     add 91daae3c9cd HBASE-30029 Bump requests from 2.32.4 to 2.33.0 in /dev-support/flaky-tests (#7979)
     add eb0f49b16d8 HBASE-30026 Bump picomatch from 4.0.3 to 4.0.4 in /hbase-website (#7980)
     add 9babe6ee961 HBASE-30027 Need to remove stall patch files before unstashing in generate web site job (#7981)
     add 726faebefa4 HBASE-30030 The "Edit on GitHub" is floating in generated PDF (#7983)
     add 2b1e60434d1 HBASE-30034 Bump requests from 2.32.4 to 2.33.0 in dev-support/git-jira-release-audit (#7989)
     add 742a83e6989 HBASE-30007 Multiget with timestamp incorrectly returns 404 not found (#7956)
     add 3f8132e7824 HBASE-30032 Fix flaky dark PDF export (#7985)
     add a3a65c6ae4b HBASE-30035 Bump happy-dom from 20.0.8 to 20.8.8 in /hbase-website (#7987)
     add 3cce140a931 HBASE-29863 Adding support for capturing files read during scan (#7823)
     add ddd2c87e860 HBASE-29968 Upgrade hbase-mapreduce to use junit5 (#7861)
     add d462dba4b4a HBASE-29968 Addendum adapted to the latest changes
     add 65d99e69159 HBASE-29970 SplitSuccess and SplitTime metrics are no longer used at RegionServer and Table level (#7866)
     add 9b831dd13f4 HBASE-30044 Bump path-to-regexp in /hbase-website (#7998)
     add d2804e7b35b HBASE-30040 Bump cryptography in /dev-support/git-jira-release-audit (#7997)
     add 9aa43fb6e46 HBASE-30045 Bump happy-dom from 20.8.8 to 20.8.9 in /hbase-website (#8004)
     add aedef59d737 HBASE-30011 Upgrade hbase-server to use junit5 Part1 (#7947)
     add 3c99c060b2b HBASE-30012 Upgrade hbase-server to use junit5 Part2 (#7960)
     add f59bc9a1e95 HBASE-30042 Test AuthUtil.loginClient with existing Kerberos login (#8002)
     add 2e42e4cdc9d HBASE-28660 list_namespace not working after an incorrect user input (#7931)
     add 39f5903f0e2 HBASE-30039 Upgrade hbase-server to use junit5 Part3 (#7999)
     add e057995c7e0 HBASE-30055 Correct the configuration in MobFileCompactionChore log (#8023)
     add c62bc9e4b1f HBASE-30052 Fix copied Javadoc in MultipleColumnPrefixFilter (#8019)
     add 04e21941699 HBASE-30041 Upgrade hbase-server to use junit5 Part4 (#8000)
     add 0c113384906 HBASE-30033 Scan.setFilter() should validate against existing batch setting (#7988)
     add 39c7455c715 HBASE-30056: Fix markdown in hbase-archetypes README.md (#8025)
     add 7b27d0941df HBASE-30036 Skip redundant delete markers during flush and minor compaction (#7993)
     add 4b85a2234b5 HBASE-29039 Seek past delete markers instead of skipping one at a time (#8001)
     add 80dd0c2ea2a HBASE-30060: Add documentation about addressing multiple SLF4J bindings (#8029)
     add 03f9f17d46d HBASE-30059 Upgrade hbase-server to use junit5 Part6 (#8028)
     add 31e5517d908 HBASE-30057 Upgrade hbase-server to use junit5 Part5 (#8043)
     add b316753e184 HBASE-30065: Address existing Rubocop errors/warning (#8041)
     add d430f2ac36d HBASE-30063 Upgrade hbase-server to use junit5 Part7 (#8031)
     add 8bf3fb6315b Bump cryptography in /dev-support/git-jira-release-audit (#8045)
     add 39ade869242 Revert "Bump cryptography in /dev-support/git-jira-release-audit (#8045)" (#8055)
     add baaf6dd2b87 HBASE-30068 Bump cryptography in /dev-support/git-jira-release-audit (#8056)
     add 4c1d0eb7592 HBASE-30064 Upgrade hbase-server to use junit5 Part8 (#8032)
     add b5f648b6d8d HBASE-30066 Upgrade hbase-server to use junit5 Part9 (#8042)
     add 235ea447c43 HBASE-30071 Upgrade hbase-server to use junit5 Part11 (#8068)
     add 26dfd47053e HBASE-30076 Bump vite from 7.2.6 to 7.3.2 in /hbase-website (#8026)
     add 1485c8e0c8b HBASE-30077 Bump lodash from 4.17.23 to 4.18.1 in /hbase-website (#8053)
     add 810c77e142a HBASE-30031 Add link for all docs' markdown file for LLMs (#7984)
     add 73f8114c1af HBASE-30067 Upgrade hbase-server to use junit5 Part10 (#8046)
     add 3b1b12c68fa HBASE-30074 Update downloads content.md for 2.5.14 (#8061)
     add 7bb4a57efb1 HBASE-30075 Update downloads content.md for 2.6.5 (#8062)
     add da9c2535b48 HBASE-30073 Test fixes for some flappers and a reproducible error (#8057)
     add 8c20b4cc79b Adding default implementation for getFilesRead API (#8027)
     add 7448335602a HBASE-30083 Bump org.apache.logging.log4j:log4j-1.2-api from 2.25.3 to 2.25.4 (#8076)
     add 3b4c67073ef HBASE-30078 Bump org.apache.logging.log4j:log4j-core from 2.25.3 to 2.25.4 (#8060)
     add b818f1710e6 Revert "Adding default implementation for getFilesRead API (#8027)"
     add 1e483c9801f HBASE-29863 Adding default implementation for getFilesRead API (Addendum) (#8027)
     add b0ea0925563 Revert "HBASE-30078 Bump org.apache.logging.log4j:log4j-core from 2.25.3 to 2…" (#8095)
     add b5b57f7d15c HBASE-30070 Replace deprecated JRuby LoadService#findFileForLoad with $LOAD_PATH.resolve_feature_path (#8052)
     add a7cafca6561 HBASE-30091 Rewrite CloneSnapshotFromClientTestBase and its sub classes (#8102)
     add 696fc13ca91 HBASE-30088 Bump org.bouncycastle:bcpkix-jdk18on from 1.81 to 1.84 (#8097)
     add 9c6654846a1 Revert "HBASE-30073 Test fixes for some flappers and a reproducible error (#8057)"
     add adca12116e0 HBASE-30086 Rewrite TestFromClientSide related tests (#8098)
     add 051c93c985d HBASE-30100 Fix misleading Javadoc for Table.batch about null in results array (#8109)
     add 29d5b616ffd HBASE-30038: RefCnt Leak error when caching (#7995)
     add 8600fd69cb8 HBASE-30103 Fix error running TestZstdDictionarySplitMerge test (#8114)
     add 60e22abcbd8 HBASE-30098 Rewrite RestoreSnapshotFromClientTestBase and its sub classes (#8107)
     add de30a2bdb08 HBASE-30111 Fix for flapper TestBlockBytesScannedQuota by AI (#8117)
     add 79f14ed4225 HBASE-30089 Rewrite AbstractTestAsyncTableScan and related sub classes (#8099)
     add f2a63b2ed66 HBASE-30120 Bump gitpython from 3.1.41 to 3.1.47 in /dev-support/flaky-tests (#8142)
     add d266dd932ce HBASE-30121 Bump gitpython in /dev-support/git-jira-release-audit (#8143)
     add fa48009f783 HBASE-30122 Bump postcss from 8.5.6 to 8.5.12 in /hbase-website (#8148)
     add 63c0838bb22 HBASE-27826 Add FSFT implementations for Virtual links and enable them as part of SplitProcedure (#6936)
     add 9af77151403 HBASE-30119 Stop JmxCacheBuster in HBTU (#8145)
     add 0f887c28c0f Revert "HBASE-30119 Stop JmxCacheBuster in HBTU (#8145)"
     add 1ba4d70b746 HBASE-30119 Stop JmxCacheBuster in HBTU (#8156)
     add 2873eb820f8 HBASE-30126 Fix mismatched LoggerFactory class references (#8152)
     add fab7c6ed7cb HBASE-30129 Split TestFromClientSide3 (#8163)
     add 30f7266f085 HBASE-30079 Upgrade hbase-compression to use junit5 (#8072)
     add 2187ed75885 HBASE-30125 Rewrite TestHFileBlockHeaderCorruption (#8165)
     add eae4887cd41 HBASE-30123 Upgrade hbase-server to use junit5 Part13 (#8153)
     add ac88feb4dcc HBASE-30101 Move login() before RpcServer construction (#8122)
     add 01ca956ecf7 HBASE-30102 Add metric to account for region data classified as cold by the Time Based Priority logic (#8128)
     add 57c4ce35ef2 HBASE-30124 Upgrade hbase-server to use junit5 Part14 (#8151)
     add 577942f9386 HBASE-30130 Add a security-model section to the website (#8170)
     add 305389de264 HBASE-30132 Expose per column family storeFileSize JMX metric (#8181)
     add 9119caf5d88 HBASE-30133 opt-in yetus prerelease testing in GHA precommit workflows (#8182)
     add efd2128200c HBASE-30124 Addendum Upgrade hbase-server to use junit5 Part14 (#8183)
     add 7fd14181b6c HBASE-30128 Fix WALCellCodec off-heap KV tags compression test mismatch (#8158)
     add b61d47f1654 HBASE-30130 Addendum Add a security-model section to the website (#8194)
     add 8d92924fe1f HBASE-30144 Fix flakeyness on TestPrefetchWithBucketCache (#8198)
     add 4c65507a794 HBASE-30140 Rewrite TestScannersFromClientSide (#8195)
     add f5575e333e0 HBASE-30141 Split TestFromClientSide5 (#8193)
     add 08e05d367e5 HBASE-30117 TableDescriptorChecker should verify CF date-tiered and bloom filter configuration set via setValue (#8144)
     add fbcd02d5232 HBASE-30131 Rewrite TestAsyncMetaRegionLocator (#8206)
     add 297a17fd3ff HBASE-30148 Bump gitpython in /dev-support/git-jira-release-audit (#8208)
     add dac3997e890 HBASE-30147 Bump gitpython from 3.1.47 to 3.1.50 in /dev-support/flaky-tests (#8214)
     add 8bf4937a550 HBASE-30131 Addendum use more accurate assert condition
     add 21d3fdfbca6 HBASE-29974: Persist filter hints across scan circuit breaks (#7882)
     add b100380f4f1 HBASE-30151 Bump fast-uri from 3.1.0 to 3.1.2 in /hbase-website (#8211)
     add e2c484d96c1 HBASE-30134: Improve CacheAwareLoadBalancer to consider low cache ratio when calculating imbalance (#8197)
     add 8cf36a7d8a9 HBASE-30152 Bump gitpython in /dev-support/git-jira-release-audit (#8215)
     add f4a14a4006e Bump urllib3 from 2.6.3 to 2.7.0 in /dev-support/git-jira-release-audit (#8220)
     add 5b3025d783f HBASE-30156 TestSecureWAL is broken (#8225)
     add 506c70deba8 Revert "Bump urllib3 from 2.6.3 to 2.7.0 in /dev-support/git-jira-release-aud…" (#8226)
     add b3a982fda7f HBASE-30146 Upgrade hbase-server to use junit5 Part18 (#8200)
     add 89fed0a96bc HBASE-30157 Bump urllib3 from 2.6.3 to 2.7.0 in /dev-support/git-jira-release-audit (#8235)
     add 61e78cdec0a HBASE-30082 Upgrade hbase-server to use junit5 Part12 (#8190)
     add e45818ee9ae HBASE-30150 Propagate filter hints through composite filters (#8217)
     add 246910f0c78 HBASE-29267 Support shaded clients in Exception deserialization by prefixing shaded package in IPCUtil (#6917)
     add 759311f4129 HBASE-30155 MobFileCleanerChore does not shut down its internal execu… (#8222)
     add 5c74212f24a HBASE-30153 Upgrade hbase-common to junit5 (#8219)
     add 8fd79a0ea7f HBASE-30135: Improve CacheAwareLoadBalancer to simulate low cache ratio regions as cached in candidate servers with enough cache space (#8221)
     add 6869182439d HBASE-30168 Remove webkit from Playwright e2e tests; it crashes on CI (#8257)
     new 11b8b7d65b9 Remove many uses of Unsafe
     new 366f4d90d63 fix logic bug

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (7d675fc5fac)
            \
             N -- N -- N   refs/heads/HBASE-29688/varhandle (366f4d90d63)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .github/workflows/yetus-general-check.yml          |   171 +
 .../yetus-jdk17-hadoop3-compile-check.yml          |   140 +
 .../workflows/yetus-jdk17-hadoop3-unit-check.yml   |   162 +
 .gitignore                                         |    10 +-
 .idea/vcs.xml                                      |    39 +
 NOTICE.txt                                         |     2 +-
 README.md                                          |    21 +-
 bin/hbase                                          |     2 +-
 conf/hbase-env.cmd                                 |     2 +-
 conf/hbase-env.sh                                  |     5 +-
 conf/hbase-site.xml                                |     2 +-
 dev-support/Jenkinsfile                            |   446 +-
 dev-support/create-release/README.txt              |     3 +-
 dev-support/create-release/release-build.sh        |     2 +
 ...osition_instead_of_inheritance-HBASE-17732.adoc |     4 +-
 dev-support/docker/Dockerfile                      |    13 +
 dev-support/flaky-tests/python-requirements.txt    |     4 +-
 dev-support/flaky-tests/report-flakies.py          |    53 +-
 .../generate-website/build-hbase-website.sh        |   250 +
 .../generate-hbase-website.Jenkinsfile             |   137 +
 dev-support/gh_hide_old_comments.sh                |    96 +-
 .../git-jira-release-audit/requirements.txt        |    10 +-
 ...doop3-backwards-compatibility-check.Jenkinsfile |   326 +
 dev-support/hbase-personality.sh                   |    92 +-
 dev-support/hbase-vote.sh                          |     4 +-
 .../hbase_nightly_pseudo-distributed-test.sh       |   540 -
 dev-support/hbase_nightly_source-artifact.sh       |   241 -
 .../integration-test/integration-test.Jenkinsfile  |   404 +
 dev-support/integration-test/patch-hadoop3.sh      |    24 +
 .../integration-test/pseudo-distributed-test.sh    |   540 +
 dev-support/integration-test/source-artifact.sh    |   242 +
 .../generate-hbase-website.Jenkinsfile             |    94 -
 .../jenkins-scripts/generate-hbase-website.sh      |   289 -
 dev-support/jenkins_precommit_github_yetus.sh      |    30 +-
 dev-support/make_rc.sh                             |     2 +-
 dev-support/patch-hadoop3.sh                       |    24 -
 dev-support/spotbugs-exclude.xml                   |    12 +
 dev-support/yetus_console_to_md.py                 |   522 +
 hbase-archetypes/README.md                         |    16 +-
 hbase-archetypes/hbase-archetype-builder/pom.xml   |     1 +
 hbase-archetypes/hbase-client-project/pom.xml      |     5 -
 .../archetypes/exemplars/client/HelloHBase.java    |     3 +-
 .../exemplars/client/TestHelloHBase.java           |    35 +-
 .../hbase-shaded-client-project/pom.xml            |     5 -
 .../exemplars/shaded_client/HelloHBase.java        |     3 +-
 .../exemplars/shaded_client/TestHelloHBase.java    |    35 +-
 hbase-assembly/pom.xml                             |    14 +-
 hbase-asyncfs/pom.xml                              |     5 -
 .../io/asyncfs/FanOutOneBlockAsyncDFSOutput.java   |     4 +-
 .../FanOutOneBlockAsyncDFSOutputHelper.java        |     8 +-
 .../FanOutOneBlockAsyncDFSOutputSaslHelper.java    |     3 +-
 .../hadoop/hbase/io/asyncfs/AsyncFSTestBase.java   |     6 +
 .../io/asyncfs/TestExcludeDatanodeManager.java     |    18 +-
 .../asyncfs/TestFanOutOneBlockAsyncDFSOutput.java  |    98 +-
 .../TestFanOutOneBlockAsyncDFSOutputHang.java      |    30 +-
 .../hadoop/hbase/io/asyncfs/TestLeaseRenewal.java  |    25 +-
 .../hbase/io/asyncfs/TestLocalAsyncOutput.java     |    17 +-
 .../TestOverwriteFileUnderConstruction.java        |    39 +-
 .../TestSaslFanOutOneBlockAsyncDFSOutput.java      |    77 +-
 .../hbase/io/asyncfs/TestSendBufSizePredictor.java |    15 +-
 .../hadoop/hbase/util/TestRecoverLeaseFSUtils.java |    37 +-
 hbase-backup/pom.xml                               |     5 -
 .../apache/hadoop/hbase/backup/BackupAdmin.java    |    16 +-
 .../org/apache/hadoop/hbase/backup/BackupInfo.java |    34 +-
 .../hbase/backup/BackupRestoreConstants.java       |     2 +-
 .../apache/hadoop/hbase/backup/RestoreRequest.java |     2 +-
 .../hadoop/hbase/backup/impl/BackupAdminImpl.java  |    62 +-
 .../hadoop/hbase/backup/impl/BackupCommands.java   |    57 +-
 .../hadoop/hbase/backup/impl/BackupManager.java    |    38 +-
 .../hbase/backup/impl/BackupSystemTable.java       |   273 +-
 .../hbase/backup/impl/FullTableBackupClient.java   |    18 +-
 .../backup/impl/IncrementalBackupManager.java      |    29 +-
 .../backup/impl/IncrementalTableBackupClient.java  |     6 +-
 .../hbase/backup/impl/TableBackupClient.java       |     5 +-
 .../hbase/backup/master/BackupLogCleaner.java      |   104 +-
 .../hadoop/hbase/backup/util/BackupBoundaries.java |   169 +
 .../hadoop/hbase/backup/util/BackupUtils.java      |   123 +-
 .../backup/IncrementalBackupRestoreTestBase.java   |   129 +
 .../apache/hadoop/hbase/backup/TestBackupBase.java |    30 +-
 .../hbase/backup/TestBackupBoundaryTests.java      |    44 +-
 .../hbase/backup/TestBackupCommandLineTool.java    |    20 +-
 .../hadoop/hbase/backup/TestBackupDelete.java      |    22 +-
 .../hbase/backup/TestBackupDeleteRestore.java      |    18 +-
 .../hbase/backup/TestBackupDeleteWithFailures.java |    20 +-
 .../hadoop/hbase/backup/TestBackupDescribe.java    |    16 +-
 .../hbase/backup/TestBackupHFileCleaner.java       |    35 +-
 .../hadoop/hbase/backup/TestBackupManager.java     |    32 +-
 .../hadoop/hbase/backup/TestBackupMerge.java       |    26 +-
 .../hbase/backup/TestBackupMultipleDeletes.java    |    19 +-
 .../hadoop/hbase/backup/TestBackupRepair.java      |    16 +-
 .../hbase/backup/TestBackupRestoreExpiry.java      |    28 +-
 .../TestBackupRestoreOnEmptyEnvironment.java       |    59 +-
 .../backup/TestBackupRestoreWithModifications.java |    54 +-
 .../hadoop/hbase/backup/TestBackupShowHistory.java |   171 +-
 .../hadoop/hbase/backup/TestBackupSmallTests.java  |    32 +-
 .../hbase/backup/TestBackupStatusProgress.java     |    14 +-
 .../hadoop/hbase/backup/TestBackupSystemTable.java |    47 +-
 .../hadoop/hbase/backup/TestBackupUtils.java       |    25 +-
 .../apache/hadoop/hbase/backup/TestFullBackup.java |    16 +-
 .../hadoop/hbase/backup/TestFullBackupSet.java     |    18 +-
 .../hbase/backup/TestFullBackupSetRestoreSet.java  |    32 +-
 .../hbase/backup/TestFullBackupWithFailures.java   |    18 +-
 .../hadoop/hbase/backup/TestFullRestore.java       |    73 +-
 .../hadoop/hbase/backup/TestHBackupFileSystem.java |    14 +-
 .../hadoop/hbase/backup/TestIncrementalBackup.java |   579 -
 .../backup/TestIncrementalBackupDeleteTable.java   |    24 +-
 .../TestIncrementalBackupMergeWithBulkLoad.java    |    46 +-
 .../TestIncrementalBackupMergeWithFailures.java    |    34 +-
 .../hbase/backup/TestIncrementalBackupRestore.java |   213 +
 ...crementalBackupRestoreHandlesArchivedFiles.java |   117 +
 ...IncrementalBackupRestoreWithOriginalSplits.java |   138 +
 ...lBackupRestoreWithOriginalSplitsSeperateFs.java |    85 +
 .../backup/TestIncrementalBackupWithBulkLoad.java  |    34 +-
 .../backup/TestIncrementalBackupWithDataLoss.java  |    14 +-
 .../backup/TestIncrementalBackupWithFailures.java  |    36 +-
 .../hadoop/hbase/backup/TestRemoteBackup.java      |    30 +-
 .../hadoop/hbase/backup/TestRemoteRestore.java     |    22 +-
 .../hbase/backup/TestRepairAfterFailedDelete.java  |    14 +-
 .../hbase/backup/TestRestoreBoundaryTests.java     |    14 +-
 .../hbase/backup/TestSystemTableSnapshot.java      |    15 +-
 .../mapreduce/TestMapReduceBackupCopyJob.java      |    16 +-
 .../hbase/backup/master/TestBackupLogCleaner.java  |   206 +-
 .../master/TestRestoreBackupSystemTable.java       |    22 +-
 hbase-balancer/pom.xml                             |     5 -
 .../apache/hadoop/hbase/master/LoadBalancer.java   |    13 +
 .../master/balancer/BalancerClusterState.java      |    72 +-
 .../master/balancer/BalancerConditionals.java      |     2 +-
 .../hbase/master/balancer/BalancerRegionLoad.java  |     6 +
 .../hbase/master/balancer/BaseLoadBalancer.java    |     2 +-
 .../master/balancer/CacheAwareLoadBalancer.java    |   285 +-
 .../master/balancer/StochasticLoadBalancer.java    |    30 +-
 .../favored/TestFavoredNodeAssignmentHelper.java   |   131 +-
 .../favored/TestStartcodeAgnosticServerName.java   |    25 +-
 .../apache/hadoop/hbase/master/TestRegionPlan.java |    48 +-
 .../hbase/master/balancer/BalancerTestBase.java    |    18 +-
 .../balancer/CandidateGeneratorTestUtil.java       |     2 +-
 .../balancer/StochasticBalancerTestBase.java       |    16 +-
 .../balancer/StochasticBalancerTestBase2.java      |     8 +-
 .../master/balancer/TestBalancerConditionals.java  |    38 +-
 .../master/balancer/TestBaseLoadBalancer.java      |    90 +-
 .../hbase/master/balancer/TestDoubleArrayCost.java |    15 +-
 ...terBalancingConditionalReplicaDistribution.java |    20 +-
 ...estLargeClusterBalancingMetaTableIsolation.java |    21 +-
 ...tLargeClusterBalancingSystemTableIsolation.java |    21 +-
 ...ancingTableIsolationAndReplicaDistribution.java |    22 +-
 .../TestRegionHDFSBlockLocationFinder.java         |    33 +-
 .../hbase/master/balancer/TestServerAndLoad.java   |    18 +-
 .../master/balancer/TestSimpleLoadBalancer.java    |    39 +-
 .../balancer/TestStochasticLoadBalancer.java       |    52 +-
 .../TestStochasticLoadBalancerBalanceCluster.java  |    19 +-
 ...estStochasticLoadBalancerHeterogeneousCost.java |    21 +-
 ...ochasticLoadBalancerHeterogeneousCostRules.java |    35 +-
 .../TestStochasticLoadBalancerLargeCluster.java    |    15 +-
 .../TestStochasticLoadBalancerMidCluster.java      |    13 +-
 .../TestStochasticLoadBalancerRegionReplica.java   |    19 +-
 ...icLoadBalancerRegionReplicaHighReplication.java |    13 +-
 ...asticLoadBalancerRegionReplicaLargeCluster.java |    13 +-
 ...chasticLoadBalancerRegionReplicaMidCluster.java |    13 +-
 ...egionReplicaReplicationGreaterThanNumNodes.java |    13 +-
 ...ochasticLoadBalancerRegionReplicaSameHosts.java |    13 +-
 ...ochasticLoadBalancerRegionReplicaWithRacks.java |    18 +-
 .../TestStochasticLoadBalancerSmallCluster.java    |    13 +-
 .../TestStoreFileTableSkewCostFunction.java        |    27 +-
 .../balancer/TestUnattainableBalancerCostGoal.java |    17 +-
 .../resources/hbase/checkstyle-suppressions.xml    |     1 -
 hbase-client/pom.xml                               |    11 +-
 .../org/apache/hadoop/hbase/RegionMetrics.java     |     6 +
 .../apache/hadoop/hbase/RegionMetricsBuilder.java  |    26 +-
 .../org/apache/hadoop/hbase/ServerMetrics.java     |    18 +
 .../apache/hadoop/hbase/ServerMetricsBuilder.java  |    40 +-
 .../java/org/apache/hadoop/hbase/client/Admin.java |    41 +
 .../hadoop/hbase/client/AdminOverAsyncAdmin.java   |    11 +
 .../org/apache/hadoop/hbase/client/AsyncAdmin.java |    18 +
 .../hbase/client/AsyncBatchRpcRetryingCaller.java  |     5 +-
 .../hbase/client/AsyncBufferedMutatorImpl.java     |   160 +-
 .../hadoop/hbase/client/AsyncClientScanner.java    |    61 +-
 .../hadoop/hbase/client/AsyncHBaseAdmin.java       |    10 +
 .../AsyncMasterRequestRpcRetryingCaller.java       |    15 +-
 .../hbase/client/AsyncRpcRetryingCaller.java       |     1 -
 .../client/AsyncRpcRetryingCallerFactory.java      |    26 +-
 .../AsyncScanSingleRegionRpcRetryingCaller.java    |    24 +-
 .../hbase/client/ColumnFamilyDescriptor.java       |     3 +
 .../client/ColumnFamilyDescriptorBuilder.java      |    32 +-
 .../hadoop/hbase/client/ConnectionUtils.java       |    61 +-
 .../hbase/client/CoprocessorDescriptorBuilder.java |    35 +-
 .../hadoop/hbase/client/RawAsyncHBaseAdmin.java    |    57 +-
 .../hadoop/hbase/client/RawAsyncTableImpl.java     |    40 +-
 .../java/org/apache/hadoop/hbase/client/Scan.java  |     4 +
 .../java/org/apache/hadoop/hbase/client/Table.java |    11 +-
 .../hadoop/hbase/client/TableDescriptor.java       |    27 +
 .../hbase/client/TableDescriptorBuilder.java       |    13 +
 .../hadoop/hbase/client/ZKConnectionRegistry.java  |     2 +-
 .../apache/hadoop/hbase/client/package-info.java   |     6 +-
 .../hadoop/hbase/filter/ColumnPrefixFilter.java    |     8 +
 .../hadoop/hbase/filter/ColumnRangeFilter.java     |     8 +
 .../org/apache/hadoop/hbase/filter/Filter.java     |    89 +
 .../org/apache/hadoop/hbase/filter/FilterBase.java |    22 +
 .../org/apache/hadoop/hbase/filter/FilterList.java |    10 +
 .../hadoop/hbase/filter/FilterListWithAND.java     |    66 +
 .../hadoop/hbase/filter/FilterListWithOR.java      |    52 +
 .../hbase/filter/MultipleColumnPrefixFilter.java   |    30 +-
 .../org/apache/hadoop/hbase/filter/SkipFilter.java |    10 +
 .../hadoop/hbase/filter/WhileMatchFilter.java      |    10 +
 .../apache/hadoop/hbase/ipc/AbstractRpcClient.java |     5 +
 .../hadoop/hbase/ipc/BlockingRpcConnection.java    |     5 +-
 .../hbase/ipc/DelegatingHBaseRpcController.java    |    19 +
 .../hadoop/hbase/ipc/HBaseRpcController.java       |    27 +
 .../hadoop/hbase/ipc/HBaseRpcControllerImpl.java   |    12 +
 .../java/org/apache/hadoop/hbase/ipc/IPCUtil.java  |    13 +-
 .../hadoop/hbase/ipc/NettyRpcConnection.java       |     5 +-
 .../org/apache/hadoop/hbase/ipc/RpcConnection.java |    35 +-
 .../apache/hadoop/hbase/ipc/ShadedPrefixUtil.java  |   127 +
 .../hadoop/hbase/keymeta/KeymetaAdminClient.java   |    89 +
 .../hbase/quotas/RpcThrottlingException.java       |    11 +
 .../hadoop/hbase/security/EncryptionUtil.java      |   106 +-
 .../provider/AuthenticationProviderSelector.java   |     7 +-
 .../SaslClientAuthenticationProviders.java         |    78 +-
 .../hbase/shaded/protobuf/RequestConverter.java    |    26 +
 .../hadoop/hbase/TestCatalogFamilyFormat.java      |    49 +-
 .../apache/hadoop/hbase/TestRegionLocations.java   |    22 +-
 .../hbase/client/TestAsyncAdminRpcPriority.java    |    38 +-
 .../client/TestAsyncBatchRpcRetryingCaller.java    |    23 +-
 .../client/TestAsyncConnectionConfiguration.java   |    17 +-
 .../hbase/client/TestAsyncConnectionTracing.java   |    31 +-
 .../client/TestAsyncMetaRegionLocatorFailFast.java |    24 +-
 .../client/TestAsyncRegionLocatorTracing.java      |    29 +-
 .../hbase/client/TestAsyncTableRpcPriority.java    |   148 +-
 .../hadoop/hbase/client/TestAsyncTableTracing.java |    31 +-
 .../apache/hadoop/hbase/client/TestAttributes.java |   131 +-
 ...estBufferedMutatorOverAsyncBufferedMutator.java |    25 +-
 .../hbase/client/TestBufferedMutatorParams.java    |    30 +-
 .../hbase/client/TestClientExponentialBackoff.java |    38 +-
 .../client/TestColumnFamilyDescriptorBuilder.java  |    39 +-
 .../TestColumnFamilyDescriptorLowerCaseEnum.java   |    19 +-
 .../hadoop/hbase/client/TestCompactFromClient.java |   115 +
 .../hbase/client/TestConnectionConfiguration.java  |    15 +-
 .../TestConnectionFactoryApplyURIQueries.java      |    23 +-
 .../hbase/client/TestConnectionRegistryLeak.java   |    23 +-
 .../client/TestConnectionRegistryUriParsing.java   |    25 +-
 .../hbase/client/TestCoprocessorDescriptor.java    |    30 +-
 .../hadoop/hbase/client/TestDeleteTimeStamp.java   |    18 +-
 .../org/apache/hadoop/hbase/client/TestGet.java    |    85 +-
 .../hadoop/hbase/client/TestImmutableScan.java     |    17 +-
 .../apache/hadoop/hbase/client/TestIncrement.java  |    15 +-
 .../hadoop/hbase/client/TestInterfaceAlign.java    |    19 +-
 .../hadoop/hbase/client/TestMetricsConnection.java |   107 +-
 .../apache/hadoop/hbase/client/TestMutation.java   |    33 +-
 .../hadoop/hbase/client/TestOnlineLogRecord.java   |    28 +-
 .../apache/hadoop/hbase/client/TestOperation.java  |   256 +-
 .../apache/hadoop/hbase/client/TestPutDotHas.java  |    43 +-
 .../hadoop/hbase/client/TestPutWriteToWal.java     |     4 +-
 .../hadoop/hbase/client/TestRegionInfoBuilder.java |    68 +-
 .../hadoop/hbase/client/TestRegionInfoDisplay.java |    58 +-
 .../client/TestRegistryEndpointsRefresher.java     |    31 +-
 .../hadoop/hbase/client/TestResultStatsUtil.java   |    16 +-
 .../TestRetriesExhaustedWithDetailsException.java  |    24 +-
 .../hadoop/hbase/client/TestRowComparator.java     |    19 +-
 .../client/TestRpcBasedRegistryHedgedReads.java    |    29 +-
 .../org/apache/hadoop/hbase/client/TestScan.java   |   115 +-
 .../hbase/client/TestSimpleRequestController.java  |    24 +-
 .../hbase/client/TestTableDescriptorBuilder.java   |   126 +-
 .../hbase/client/TestTableDescriptorUtils.java     |    13 +-
 .../hbase/client/TestTableEnableDisableError.java  |    25 +-
 .../TestHBaseServerExceptionPauseManager.java      |    19 +-
 .../hbase/exceptions/TestClientExceptionsUtil.java |    14 +-
 .../hadoop/hbase/filter/TestComparators.java       |    19 +-
 .../hadoop/hbase/filter/TestKeyOnlyFilter.java     |    41 +-
 .../hadoop/hbase/filter/TestLongComparator.java    |    13 +-
 .../hadoop/hbase/ipc/TestCellBlockBuilder.java     |    18 +-
 .../apache/hadoop/hbase/ipc/TestConnectionId.java  |    20 +-
 .../hadoop/hbase/ipc/TestFailedServersLog.java     |    23 +-
 .../hbase/ipc/TestHBaseRpcControllerImpl.java      |    20 +-
 .../org/apache/hadoop/hbase/ipc/TestIPCUtil.java   |    17 +-
 .../hadoop/hbase/ipc/TestNettyRpcConnection.java   |    27 +-
 .../hbase/ipc/TestRemoteWithExtrasException.java   |    19 +-
 .../ipc/TestRpcClientDeprecatedNameMapping.java    |    13 +-
 .../hadoop/hbase/ipc/TestShadedPrefixUtil.java     |   106 +
 .../hadoop/hbase/ipc/TestTLSHandshadeFailure.java  |    23 +-
 .../hadoop/hbase/quotas/TestQuotaFilter.java       |    12 +-
 .../quotas/TestQuotaGlobalsSettingsBypass.java     |    18 +-
 .../hbase/quotas/TestQuotaSettingsFactory.java     |    96 +-
 .../hbase/quotas/TestRpcThrottlingException.java   |    14 +-
 .../hbase/quotas/TestSpaceLimitSettings.java       |    67 +-
 .../hadoop/hbase/quotas/TestThrottleSettings.java  |    22 +-
 .../replication/ReplicationPeerConfigTestUtil.java |     6 +-
 .../replication/TestReplicationPeerConfig.java     |    27 +-
 .../hbase/security/TestHBaseSaslRpcClient.java     |    21 +-
 .../apache/hadoop/hbase/security/TestSaslUtil.java |    30 +-
 .../provider/TestDefaultProviderSelector.java      |    44 +-
 .../TestSaslClientAuthenticationProviders.java     |    48 +-
 .../hbase/security/token/TestClientTokenUtil.java  |    26 +-
 .../hbase/shaded/protobuf/TestProtobufUtil.java    |    19 +-
 .../apache/hadoop/hbase/util/BuilderStyleTest.java |     4 +-
 .../apache/hadoop/hbase/util/PoolMapTestBase.java  |     4 +-
 .../apache/hadoop/hbase/util/TestRotateFile.java   |    44 +-
 .../hadoop/hbase/util/TestRoundRobinPoolMap.java   |    17 +-
 .../hadoop/hbase/util/TestThreadLocalPoolMap.java  |    15 +-
 .../hadoop/hbase/zookeeper/TestZNodePaths.java     |    17 +-
 hbase-common/pom.xml                               |    10 +
 .../java/org/apache/hadoop/hbase/AuthUtil.java     |     6 +-
 .../java/org/apache/hadoop/hbase/HConstants.java   |     6 +
 .../apache/hadoop/hbase/io/FileChangeWatcher.java  |     7 +-
 .../hbase/io/compress/ReusableStreamGzipCodec.java |     2 +-
 .../org/apache/hadoop/hbase/io/crypto/Context.java |    20 +
 .../apache/hadoop/hbase/io/crypto/Encryption.java  |    50 +-
 .../hbase/io/crypto/KeyStoreKeyProvider.java       |     2 +
 .../hadoop/hbase/io/crypto/ManagedKeyData.java     |    34 +
 .../apache/hadoop/hbase/keymeta/KeymetaAdmin.java  |   126 +
 .../apache/hadoop/hbase/util/CommonFSUtils.java    |    34 +-
 .../apache/hadoop/hbase/util/FastStringPool.java   |   158 +
 .../java/org/apache/hadoop/hbase/util/Sleeper.java |     2 +-
 hbase-common/src/main/resources/hbase-default.xml  |    16 +-
 .../hbase/HBaseParameterizedInvocationContext.java |    55 +
 .../hbase/HBaseParameterizedParameterResolver.java |    68 +
 .../hbase/HBaseParameterizedTemplateProvider.java  |   109 +
 .../hbase/HBaseParameterizedTestTemplate.java      |    38 +
 .../hadoop/hbase/TableNameTestExtension.java       |    52 +
 .../org/apache/hadoop/hbase/TableNameTestRule.java |     6 +
 .../hbase/TestBuildThreadDiagnosticString.java     |     6 +-
 .../hadoop/hbase/TestByteBufferKeyValue.java       |    17 +-
 .../org/apache/hadoop/hbase/TestCellBuilder.java   |    16 +-
 .../apache/hadoop/hbase/TestCellComparator.java    |    19 +-
 .../java/org/apache/hadoop/hbase/TestCellUtil.java |   118 +-
 .../org/apache/hadoop/hbase/TestChoreService.java  |   103 +-
 .../org/apache/hadoop/hbase/TestClassFinder.java   |    72 +-
 .../hadoop/hbase/TestCompoundConfiguration.java    |    30 +-
 .../hadoop/hbase/TestHBaseConfiguration.java       |    29 +-
 .../hadoop/hbase/TestHDFSBlocksDistribution.java   |    60 +-
 .../hadoop/hbase/TestIndividualBytesFieldCell.java |    83 +-
 .../java/org/apache/hadoop/hbase/TestKeyValue.java |    27 +-
 .../org/apache/hadoop/hbase/TestServerName.java    |    22 +-
 .../apache/hadoop/hbase/TestSystemExitInTest.java  |    18 +-
 .../org/apache/hadoop/hbase/TestTableName.java     |    19 +-
 .../org/apache/hadoop/hbase/TestTagBuilder.java    |    17 +-
 .../java/org/apache/hadoop/hbase/TestTagUtil.java  |    13 +-
 .../java/org/apache/hadoop/hbase/TestTimeout.java  |    17 +-
 .../test/java/org/apache/hadoop/hbase/Waiter.java  |     2 +-
 .../apache/hadoop/hbase/codec/TestCellCodec.java   |    19 +-
 .../hadoop/hbase/codec/TestCellCodecWithTags.java  |    18 +-
 .../hadoop/hbase/codec/TestKeyValueCodec.java      |    19 +-
 .../hbase/codec/TestKeyValueCodecWithTags.java     |    18 +-
 .../apache/hadoop/hbase/conf/TestConfigKey.java    |    14 +-
 .../hbase/conf/TestConfigurationManager.java       |    17 +-
 .../hadoop/hbase/io/TestByteBuffAllocator.java     |    57 +-
 .../io/TestByteBuffAllocatorLeakDetection.java     |    17 +-
 .../hbase/io/TestByteBufferListOutputStream.java   |    17 +-
 .../hadoop/hbase/io/TestFileChangeWatcher.java     |   269 +-
 .../hbase/io/TestMultiByteBuffInputStream.java     |    15 +-
 .../hadoop/hbase/io/TestTagCompressionContext.java |    14 +-
 .../hbase/io/compress/CompressionTestBase.java     |    11 +-
 .../hadoop/hbase/io/compress/TestCodecPool.java    |    59 +-
 .../hadoop/hbase/io/crypto/TestCipherProvider.java |    19 +-
 .../hadoop/hbase/io/crypto/TestEncryption.java     |    22 +-
 .../hadoop/hbase/io/crypto/TestKeyProvider.java    |    32 +-
 .../hbase/io/crypto/TestKeyStoreKeyProvider.java   |    31 +-
 .../apache/hadoop/hbase/io/crypto/aes/TestAES.java |    26 +-
 .../hadoop/hbase/io/crypto/aes/TestCommonsAES.java |    27 +-
 .../crypto/tls/AbstractTestX509Parameterized.java  |    52 +-
 .../hbase/io/crypto/tls/TestBCFKSFileLoader.java   |   117 +-
 .../tls/TestFileKeyStoreLoaderBuilderProvider.java |    29 +-
 .../io/crypto/tls/TestHBaseHostnameVerifier.java   |    30 +-
 .../hbase/io/crypto/tls/TestHBaseTrustManager.java |    33 +-
 .../hbase/io/crypto/tls/TestJKSFileLoader.java     |   118 +-
 .../hbase/io/crypto/tls/TestKeyStoreFileType.java  |    97 +-
 .../hbase/io/crypto/tls/TestPEMFileLoader.java     |    98 +-
 .../hbase/io/crypto/tls/TestPKCS12FileLoader.java  |   118 +-
 .../hadoop/hbase/io/crypto/tls/TestX509Util.java   |   144 +-
 .../hbase/io/encoding/TestEncodedDataBlock.java    |    41 +-
 .../hadoopbackport/TestThrottledInputStream.java   |    15 +-
 .../hadoop/hbase/io/util/TestLRUDictionary.java    |    56 +-
 .../apache/hadoop/hbase/logging/TestJul2Slf4j.java |    22 +-
 .../hadoop/hbase/logging/TestLog4jUtils.java       |    16 +-
 .../apache/hadoop/hbase/net/BoundSocketMaker.java  |     4 -
 .../org/apache/hadoop/hbase/net/TestAddress.java   |    15 +-
 .../apache/hadoop/hbase/nio/TestMultiByteBuff.java |    23 +-
 .../hadoop/hbase/nio/TestSingleByteBuff.java       |    15 +-
 .../hadoop/hbase/types/TestCopyOnWriteMaps.java    |    28 +-
 .../hadoop/hbase/types/TestFixedLengthWrapper.java |    34 +-
 .../apache/hadoop/hbase/types/TestOrderedBlob.java |    21 +-
 .../hadoop/hbase/types/TestOrderedBlobVar.java     |    19 +-
 .../hadoop/hbase/types/TestOrderedFloat32.java     |    36 +-
 .../hadoop/hbase/types/TestOrderedFloat64.java     |    36 +-
 .../hadoop/hbase/types/TestOrderedInt16.java       |    36 +-
 .../hadoop/hbase/types/TestOrderedInt32.java       |    36 +-
 .../hadoop/hbase/types/TestOrderedInt64.java       |    36 +-
 .../apache/hadoop/hbase/types/TestOrderedInt8.java |    36 +-
 .../hadoop/hbase/types/TestOrderedNumeric.java     |    44 +-
 .../hadoop/hbase/types/TestOrderedString.java      |    19 +-
 .../apache/hadoop/hbase/types/TestRawBytes.java    |    28 +-
 .../apache/hadoop/hbase/types/TestRawString.java   |    21 +-
 .../org/apache/hadoop/hbase/types/TestStruct.java  |    60 +-
 .../hbase/types/TestStructNullExtension.java       |    98 +-
 .../hadoop/hbase/types/TestTerminatedWrapper.java  |    39 +-
 .../org/apache/hadoop/hbase/types/TestUnion2.java  |    14 +-
 .../hadoop/hbase/util/AbstractHBaseToolTest.java   |    19 +-
 .../hadoop/hbase/util/ByteBufferUtilsTestBase.java |     4 +-
 .../hadoop/hbase/util/ClassLoaderTestHelper.java   |    55 +-
 .../org/apache/hadoop/hbase/util/TestAvlUtil.java  |    23 +-
 .../hadoop/hbase/util/TestByteBufferArray.java     |    21 +-
 .../hadoop/hbase/util/TestByteBufferUtils.java     |     5 +
 .../hbase/util/TestByteBufferUtilsWoUnsafe.java    |     9 +-
 .../hadoop/hbase/util/TestByteRangeUtils.java      |    18 +-
 .../util/TestByteRangeWithKVSerialization.java     |    24 +-
 .../org/apache/hadoop/hbase/util/TestClasses.java  |    23 +-
 .../hadoop/hbase/util/TestCommonFSUtils.java       |    30 +-
 .../hadoop/hbase/util/TestConcatenatedLists.java   |    72 +-
 .../hbase/util/TestCoprocessorClassLoader.java     |    36 +-
 .../hadoop/hbase/util/TestDynamicClassLoader.java  |    27 +-
 .../hbase/util/TestEnvironmentEdgeManager.java     |    21 +-
 .../hadoop/hbase/util/TestFastStringPool.java      |   115 +
 .../apache/hadoop/hbase/util/TestFutureUtils.java  |    68 +-
 .../org/apache/hadoop/hbase/util/TestGsonUtil.java |    15 +-
 .../apache/hadoop/hbase/util/TestJRubyFormat.java  |    16 +-
 .../apache/hadoop/hbase/util/TestKeyLocker.java    |    42 +-
 .../hadoop/hbase/util/TestMovingAverage.java       |    73 +-
 .../org/apache/hadoop/hbase/util/TestOrder.java    |    14 +-
 .../apache/hadoop/hbase/util/TestOrderedBytes.java |   411 +-
 .../hadoop/hbase/util/TestReservoirSample.java     |    19 +-
 .../apache/hadoop/hbase/util/TestRetryCounter.java |    14 +-
 .../hadoop/hbase/util/TestShowProperties.java      |    13 +-
 .../hadoop/hbase/util/TestSimpleKdcServerUtil.java |    12 +-
 .../hbase/util/TestSimpleMutableByteRange.java     |    78 +-
 .../util/TestSimplePositionedMutableByteRange.java |    67 +-
 .../org/apache/hadoop/hbase/util/TestStrings.java  |    22 +-
 .../org/apache/hadoop/hbase/util/TestThreads.java  |    23 +-
 .../apache/hadoop/hbase/util/TestVersionInfo.java  |    16 +-
 .../hadoop/hbase/util/TestWeakObjectPool.java      |    38 +-
 .../hadoop/hbase/zookeeper/TestZKConfig.java       |    27 +-
 .../aircompressor/TestHFileCompressionLz4.java     |    18 +-
 .../aircompressor/TestHFileCompressionLzo.java     |    18 +-
 .../aircompressor/TestHFileCompressionSnappy.java  |    18 +-
 .../aircompressor/TestHFileCompressionZstd.java    |    18 +-
 .../io/compress/aircompressor/TestLz4Codec.java    |    12 +-
 .../io/compress/aircompressor/TestLzoCodec.java    |    13 +-
 .../io/compress/aircompressor/TestSnappyCodec.java |    13 +-
 .../aircompressor/TestWALCompressionLz4.java       |    20 +-
 .../aircompressor/TestWALCompressionLzo.java       |    19 +-
 .../aircompressor/TestWALCompressionSnappy.java    |    20 +-
 .../aircompressor/TestWALCompressionZstd.java      |    20 +-
 .../io/compress/aircompressor/TestZstdCodec.java   |    13 +-
 .../hbase/io/compress/brotli/TestBrotliCodec.java  |    13 +-
 .../brotli/TestHFileCompressionBrotli.java         |    18 +-
 .../compress/brotli/TestWALCompressionBrotli.java  |    20 +-
 hbase-compression/hbase-compression-lz4/pom.xml    |     2 +-
 .../io/compress/lz4/TestHFileCompressionLz4.java   |    18 +-
 .../hadoop/hbase/io/compress/lz4/TestLz4Codec.java |    13 +-
 .../io/compress/lz4/TestWALCompressionLz4.java     |    19 +-
 .../xerial/TestHFileCompressionSnappy.java         |    20 +-
 .../hbase/io/compress/xerial/TestSnappyCodec.java  |    19 +-
 .../compress/xerial/TestWALCompressionSnappy.java  |    22 +-
 .../io/compress/zstd/TestHFileCompressionZstd.java |    27 +-
 .../io/compress/zstd/TestWALCompressionZstd.java   |    19 +-
 .../zstd/TestZstdByteBuffDecompressor.java         |    21 +-
 .../hbase/io/compress/zstd/TestZstdCodec.java      |    13 +-
 .../hbase/io/compress/zstd/TestZstdDictionary.java |    27 +-
 .../zstd/TestZstdDictionarySplitMerge.java         |    37 +-
 hbase-compression/pom.xml                          |    10 +
 hbase-diagnostics/pom.xml                          |    24 +-
 .../LoadBalancerPerformanceEvaluation.java         |   121 +-
 .../org/apache/hadoop/hbase/util/LoadTestTool.java |    12 +
 .../hadoop/hbase/util/MultiThreadedReader.java     |     7 +
 .../hadoop/hbase/TestClientClusterMetrics.java     |   211 +-
 .../hadoop/hbase/TestPerformanceEvaluation.java    |    27 +-
 .../hbase/io/encoding/TestEncodedSeekers.java      |    36 +-
 .../io/encoding/TestLoadAndSwitchEncodeOnDisk.java |    28 +-
 .../TestLoadBalancerPerformanceEvaluation.java     |   103 +
 .../hadoop/hbase/security/TestEncryptionUtil.java  |    49 +-
 .../hadoop/hbase/util/TestLoadTestKVGenerator.java |    17 +-
 .../hbase/util/TestMiniClusterLoadEncoded.java     |    28 +-
 .../hbase/util/TestMiniClusterLoadParallel.java    |    26 +-
 .../hbase/util/TestMiniClusterLoadSequential.java  |    45 +-
 ...tBoundedRegionGroupingStrategyUsingWPETool.java |    39 +-
 .../TestFSHLogProviderWithConcurrentWrites.java    |    32 +-
 hbase-endpoint/pom.xml                             |     5 -
 .../hbase/client/TestAsyncAggregationClient.java   |    23 +-
 .../TestAsyncAggregationClientPartialResult.java   |    24 +-
 ...yncAggregationClientWithCallbackThreadPool.java |    24 +-
 .../hbase/client/TestRpcControllerFactory.java     |    46 +-
 .../client/coprocessor/TestAggregationClient.java  |    27 +-
 .../coprocessor/TestAggregateImplementation.java   |   263 +-
 .../coprocessor/TestAsyncCoprocessorEndpoint.java  |    41 +-
 ...AsyncCoprocessorOnAllRegionServersEndpoint.java |    41 +-
 .../coprocessor/TestBatchCoprocessorEndpoint.java  |    37 +-
 .../hadoop/hbase/coprocessor/TestClassLoading.java |   104 +-
 .../hbase/coprocessor/TestCoprocessorEndpoint.java |    34 +-
 .../TestCoprocessorEndpointTracing.java            |   174 +-
 .../coprocessor/TestCoprocessorTableEndpoint.java  |    42 +-
 .../hadoop/hbase/coprocessor/TestImportExport.java |    33 +-
 .../TestRegionServerCoprocessorEndpoint.java       |    30 +-
 .../hadoop/hbase/coprocessor/TestSecureExport.java |    52 +-
 .../hadoop/hbase/ipc/TestCoprocessorRpcUtils.java  |    14 +-
 .../regionserver/TestServerCustomProtocol.java     |    68 +-
 hbase-examples/pom.xml                             |     8 +-
 .../row/stats/recorder/RowStatisticsRecorder.java  |     1 +
 .../org/apache/hadoop/hbase/thrift/DemoClient.java |    26 +-
 .../apache/hadoop/hbase/thrift2/DemoClient.java    |    13 +-
 hbase-examples/src/main/python/requirements.txt    |    20 +
 .../src/main/python/thrift1/DemoClient.py          |   429 +-
 .../src/main/python/thrift2/DemoClient.py          |   117 +-
 hbase-examples/src/main/resources/hbase-site.xml   |    28 +
 .../client/example/TestAsyncClientExample.java     |    23 +-
 .../hbase/client/example/TestHttpProxyExample.java |    23 +-
 .../example/TestMultiThreadedClientExample.java    |    25 +-
 .../client/example/TestRefreshHFilesClient.java    |    18 +-
 .../coprocessor/example/TestRefreshHFilesBase.java |     4 +-
 .../example/TestRefreshHFilesEndpoint.java         |    20 +-
 .../example/TestScanModifyingObserver.java         |    31 +-
 .../example/TestValueReplacingCompaction.java      |    31 +-
 .../example/TestWriteHeavyIncrementObserver.java   |    30 +-
 ...avyIncrementObserverWithMemStoreCompaction.java |    28 +-
 .../example/TestZooKeeperScanPolicyObserver.java   |    25 +-
 .../WriteHeavyIncrementObserverTestBase.java       |    13 +-
 .../stats/TestRowStatisticsCompactionObserver.java |    91 +-
 .../row/stats/TestRowStatisticsEventHandler.java   |     3 +
 .../row/stats/TestRowStatisticsTableRecorder.java  |    26 +-
 .../stats/sizebucket/TestSizeBucketTracker.java    |    21 +-
 .../hbase/mapreduce/TestMapReduceExamples.java     |    18 +-
 .../TestShadeSaslAuthenticationProvider.java       |    53 +-
 .../org/apache/hadoop/hbase/types/TestPBCell.java  |    14 +-
 hbase-external-blockcache/pom.xml                  |     7 -
 .../hbase/io/hfile/TestMemcachedBlockCache.java    |    24 +-
 hbase-hadoop-compat/pom.xml                        |     4 +-
 .../apache/hadoop/hbase/CompatibilityFactory.java  |     2 +-
 .../impl/GlobalMetricRegistriesAdapter.java        |     4 +-
 .../regionserver/MetricsRegionServerSource.java    |    45 +-
 .../MetricsRegionServerSourceImpl.java             |    40 +-
 .../regionserver/MetricsRegionServerWrapper.java   |    40 +
 .../hbase/regionserver/MetricsRegionSource.java    |     2 +
 .../regionserver/MetricsRegionSourceImpl.java      |    15 +
 .../hbase/regionserver/MetricsRegionWrapper.java   |    23 +
 .../hbase/regionserver/MetricsTableSource.java     |    11 -
 .../hbase/regionserver/MetricsTableSourceImpl.java |    29 +-
 .../regionserver/MetricsTableWrapperAggregate.java |    13 +
 .../hadoop/metrics2/impl/JmxCacheBuster.java       |    24 +-
 .../hbase/TestCompatibilitySingletonFactory.java   |    16 +-
 .../master/TestMetricsMasterProcSourceImpl.java    |    17 +-
 .../master/TestMetricsMasterSourceFactory.java     |    13 +-
 .../hbase/master/TestMetricsMasterSourceImpl.java  |    16 +-
 .../hadoop/hbase/metrics/TestBaseSourceImpl.java   |    22 +-
 .../hbase/metrics/TestMetricsExportHelper.java     |    25 +-
 .../regionserver/MetricsTableWrapperStub.java      |    17 +
 .../TestMetricsRegionServerSourceFactory.java      |    13 +-
 .../TestMetricsRegionServerSourceImpl.java         |    23 +-
 .../regionserver/TestMetricsRegionSourceImpl.java  |    43 +-
 .../regionserver/TestMetricsTableSourceImpl.java   |    26 +-
 .../regionserver/TestMetricsUserSourceImpl.java    |    26 +-
 .../regionserver/wal/TestMetricsWALSource.java     |    13 +-
 .../regionserver/wal/TestMetricsWALSourceImpl.java |    17 +-
 .../TestMetricsReplicationSourceFactory.java       |    13 +-
 .../TestMetricsReplicationSourceFactoryImpl.java   |    14 +-
 .../TestMetricsReplicationSourceImpl.java          |    14 +-
 .../hadoop/hbase/rest/TestMetricsRESTSource.java   |    13 +-
 .../hbase/rest/TestMetricsRESTSourceImpl.java      |    16 +-
 .../hadoop/hbase/test/MetricsAssertHelperImpl.java |    34 +-
 .../TestMetricsThriftServerSourceFactory.java      |    13 +-
 .../TestMetricsThriftServerSourceFactoryImpl.java  |    22 +-
 .../zookeeper/TestMetricsZooKeeperSource.java      |    13 +-
 .../zookeeper/TestMetricsZooKeeperSourceImpl.java  |    18 +-
 .../metrics2/lib/TestMutableRangeHistogram.java    |    15 +-
 hbase-hbtop/pom.xml                                |     7 +-
 .../hbase/hbtop/mode/RegionModeStrategy.java       |     2 +-
 .../org/apache/hadoop/hbase/hbtop/TestRecord.java  |    11 +-
 .../hadoop/hbase/hbtop/TestRecordFilter.java       |    12 +-
 .../org/apache/hadoop/hbase/hbtop/TestUtils.java   |    12 +-
 .../hadoop/hbase/hbtop/field/TestFieldValue.java   |    14 +-
 .../hadoop/hbase/hbtop/mode/TestClientMode.java    |    12 +-
 .../hadoop/hbase/hbtop/mode/TestModeBase.java      |     2 +-
 .../hadoop/hbase/hbtop/mode/TestNamespaceMode.java |    12 +-
 .../hadoop/hbase/hbtop/mode/TestRegionMode.java    |    10 +-
 .../hbase/hbtop/mode/TestRegionServerMode.java     |    12 +-
 .../hbtop/mode/TestRequestCountPerSecond.java      |    12 +-
 .../hadoop/hbase/hbtop/mode/TestTableMode.java     |    12 +-
 .../hadoop/hbase/hbtop/mode/TestUserMode.java      |    12 +-
 .../screen/field/TestFieldScreenPresenter.java     |    22 +-
 .../hbtop/screen/help/TestHelpScreenPresenter.java |    22 +-
 .../hbtop/screen/mode/TestModeScreenPresenter.java |    18 +-
 .../top/TestFilterDisplayModeScreenPresenter.java  |    22 +-
 .../screen/top/TestInputModeScreenPresenter.java   |    22 +-
 .../screen/top/TestMessageModeScreenPresenter.java |    22 +-
 .../hadoop/hbase/hbtop/screen/top/TestPaging.java  |    11 +-
 .../hbase/hbtop/screen/top/TestTopScreenModel.java |    28 +-
 .../hbtop/screen/top/TestTopScreenPresenter.java   |    22 +-
 hbase-http/pom.xml                                 |    38 +-
 .../apache/hadoop/hbase/http/ProfileServlet.java   |     6 +-
 .../org/apache/hadoop/hbase/http/log/LogLevel.java |    47 +-
 .../hbase/http/HttpServerFunctionalTest.java       |     6 +-
 .../apache/hadoop/hbase/http/TestGlobalFilter.java |    16 +-
 .../apache/hadoop/hbase/http/TestHtmlQuoting.java  |    34 +-
 .../hadoop/hbase/http/TestHttpCookieFlag.java      |    53 +-
 .../hadoop/hbase/http/TestHttpRequestLog.java      |    19 +-
 .../apache/hadoop/hbase/http/TestHttpServer.java   |    63 +-
 .../hadoop/hbase/http/TestHttpServerLifecycle.java |    33 +-
 .../hadoop/hbase/http/TestHttpServerWebapps.java   |    15 +-
 .../apache/hadoop/hbase/http/TestPathFilter.java   |    16 +-
 .../hbase/http/TestProfileOutputServlet.java       |    23 +-
 .../hbase/http/TestProxyUserSpnegoHttpServer.java  |    28 +-
 .../hadoop/hbase/http/TestSSLHttpServer.java       |    23 +-
 .../hbase/http/TestSecurityHeadersFilter.java      |    16 +-
 .../hadoop/hbase/http/TestServletFilter.java       |    46 +-
 .../hadoop/hbase/http/TestSpnegoHttpServer.java    |    40 +-
 .../hadoop/hbase/http/conf/TestConfServlet.java    |    27 +-
 .../hadoop/hbase/http/jmx/TestJMXJsonServlet.java  |    31 +-
 .../lib/TestAuthenticationFilterInitializer.java   |    15 +-
 .../hbase/http/lib/TestStaticUserWebFilter.java    |    15 +-
 .../apache/hadoop/hbase/http/log/TestLogLevel.java |   245 +-
 .../http/prometheus/TestPrometheusServlet.java     |    19 +-
 .../org/apache/hadoop/hbase/util/TestJSONBean.java |    14 +-
 hbase-it/pom.xml                                   |     7 +-
 .../hbase/IntegrationTestAcidGuarantees.java       |     6 +-
 .../hadoop/hbase/IntegrationTestBackupRestore.java |    24 +-
 .../apache/hadoop/hbase/IntegrationTestBase.java   |    11 +-
 .../hbase/IntegrationTestDDLMasterFailover.java    |    59 +-
 .../apache/hadoop/hbase/IntegrationTestIngest.java |    18 +-
 .../IntegrationTestIngestStripeCompactions.java    |     4 +-
 .../hadoop/hbase/IntegrationTestIngestWithACL.java |     4 +-
 .../hbase/IntegrationTestIngestWithEncryption.java |     8 +-
 .../hadoop/hbase/IntegrationTestIngestWithMOB.java |     6 +-
 .../hbase/IntegrationTestIngestWithTags.java       |     4 +-
 .../IntegrationTestIngestWithVisibilityLabels.java |     4 +-
 .../hadoop/hbase/IntegrationTestLazyCfLoading.java |    33 +-
 .../hadoop/hbase/IntegrationTestManyRegions.java   |    22 +-
 .../hadoop/hbase/IntegrationTestMetaReplicas.java  |    14 +-
 .../hadoop/hbase/IntegrationTestMobCompaction.java |    19 +-
 .../hbase/IntegrationTestRegionReplicaPerf.java    |    38 +-
 .../org/apache/hadoop/hbase/MockHttpApiRule.java   |    12 +-
 .../hadoop/hbase/TestIntegrationTestBase.java      |    13 +-
 .../hadoop/hbase/TestRESTApiClusterManager.java    |    46 +-
 .../hbase/TestShellExecEndpointCoprocessor.java    |    70 +-
 .../chaos/actions/TestChangeSplitPolicyAction.java |    24 +-
 .../hadoop/hbase/ipc/IntegrationTestRpcClient.java |    16 +-
 .../hbase/mapreduce/IntegrationTestBulkLoad.java   |    11 +-
 .../IntegrationTestFileBasedSFTBulkLoad.java       |     6 +-
 .../hbase/mapreduce/IntegrationTestImportTsv.java  |    46 +-
 .../IntegrationTestTableMapReduceUtil.java         |    20 +-
 .../hadoop/hbase/mttr/IntegrationTestMTTR.java     |    22 +-
 .../hbase/test/IntegrationTestBigLinkedList.java   |     8 +-
 ...IntegrationTestBigLinkedListWithVisibility.java |     8 +-
 .../hbase/test/IntegrationTestLoadAndVerify.java   |    10 +-
 .../hadoop/hbase/test/IntegrationTestMonkeys.java  |     6 +-
 ...eBoundedMultiGetRequestsWithRegionReplicas.java |     4 +-
 ...nTestTimeBoundedRequestsWithRegionReplicas.java |    11 +-
 ...grationTestWithCellVisibilityLoadAndVerify.java |     8 +-
 .../test/IntegrationTestZKAndFSPermissions.java    |    10 +-
 .../trace/IntegrationTestSendTraceRequests.java    |     6 +-
 hbase-logging/pom.xml                              |    27 +-
 hbase-mapreduce/pom.xml                            |     7 +-
 .../apache/hadoop/hbase/mapred/package-info.java   |     2 +-
 .../apache/hadoop/hbase/mapreduce/CopyTable.java   |    32 +
 .../hadoop/hbase/mapreduce/HFileOutputFormat2.java |    31 +-
 .../hadoop/hbase/mapreduce/HRegionPartitioner.java |     2 +-
 .../org/apache/hadoop/hbase/mapreduce/Import.java  |     2 +-
 .../hbase/mapreduce/TableSnapshotInputFormat.java  |    13 +-
 .../mapreduce/TableSnapshotInputFormatImpl.java    |     2 +-
 .../hadoop/hbase/mapreduce/package-info.java       |     2 +-
 .../hadoop/hbase/snapshot/ExportSnapshot.java      |    18 +-
 .../org/apache/hadoop/hbase/mapred/TestDriver.java |    12 +-
 .../hadoop/hbase/mapred/TestGroupingTableMap.java  |    21 +-
 .../hadoop/hbase/mapred/TestIdentityTableMap.java  |    13 +-
 .../mapred/TestMultiTableSnapshotInputFormat.java  |    13 +-
 .../apache/hadoop/hbase/mapred/TestRowCounter.java |    19 +-
 .../apache/hadoop/hbase/mapred/TestSplitTable.java |    38 +-
 .../hadoop/hbase/mapred/TestTableInputFormat.java  |    73 +-
 .../hadoop/hbase/mapred/TestTableMapReduce.java    |    13 +-
 .../hbase/mapred/TestTableMapReduceUtil.java       |    33 +-
 .../TestTableOutputFormatConnectionExhaust.java    |    26 +-
 .../hbase/mapred/TestTableSnapshotInputFormat.java |    58 +-
 .../hadoop/hbase/mapreduce/CopyTableTestBase.java  |    55 +-
 .../mapreduce/CopyTableToPeerClusterTestBase.java  |    41 +-
 .../mapreduce/HFileOutputFormat2TestBase.java      |     6 +-
 .../hbase/mapreduce/MRIncrementalLoadTestBase.java |    55 +-
 .../mapreduce/MultiTableInputFormatTestBase.java   |    20 +-
 .../TableSnapshotInputFormatTestBase.java          |    27 +-
 .../hadoop/hbase/mapreduce/TestCellCounter.java    |    60 +-
 .../hbase/mapreduce/TestConfigurePartitioner.java  |    25 +-
 .../hadoop/hbase/mapreduce/TestCopyTable.java      |    61 +-
 .../TestCopyTableToPeerClusterWithClusterKey.java  |    11 +-
 .../TestCopyTableToPeerClusterWithRpcUri.java      |    12 +-
 .../TestCopyTableToPeerClusterWithZkUri.java       |    11 +-
 .../hbase/mapreduce/TestGroupingTableMapper.java   |    13 +-
 .../hbase/mapreduce/TestHBaseMRTestingUtility.java |    26 +-
 .../hbase/mapreduce/TestHFileOutputFormat2.java    |   105 +-
 .../TestHFileOutputFormat2WithSecurity.java        |    24 +-
 .../hbase/mapreduce/TestHRegionPartitioner.java    |    45 +-
 .../hadoop/hbase/mapreduce/TestHashTable.java      |    39 +-
 .../hadoop/hbase/mapreduce/TestImportExport.java   |   969 +-
 .../hbase/mapreduce/TestImportExportBase.java      |   978 +
 .../TestImportTSVWithOperationAttributes.java      |    41 +-
 .../hbase/mapreduce/TestImportTSVWithTTLs.java     |    34 +-
 .../TestImportTSVWithVisibilityLabels.java         |    83 +-
 .../hadoop/hbase/mapreduce/TestImportTsv.java      |   126 +-
 .../hbase/mapreduce/TestImportTsvParser.java       |   103 +-
 .../hadoop/hbase/mapreduce/TestJarFinder.java      |    24 +-
 .../hbase/mapreduce/TestMRIncrementalLoad.java     |    29 +-
 .../TestMRIncrementalLoadWithLocality.java         |    29 +-
 .../hbase/mapreduce/TestMultiTableInputFormat.java |    15 +-
 .../mapreduce/TestMultiTableInputFormatBase.java   |    29 +-
 .../TestMultiTableSnapshotInputFormat.java         |    19 +-
 .../TestMultiTableSnapshotInputFormatImpl.java     |    22 +-
 .../mapreduce/TestMultithreadedTableMapper.java    |    25 +-
 .../hbase/mapreduce/TestRegionSizeCalculator.java  |    15 +-
 .../mapreduce/TestRoundRobinTableInputFormat.java  |    19 +-
 .../hadoop/hbase/mapreduce/TestRowCounter.java     |    27 +-
 .../mapreduce/TestSimpleTotalOrderPartitioner.java |    15 +-
 .../hadoop/hbase/mapreduce/TestSyncTable.java      |   119 +-
 .../hbase/mapreduce/TestTableInputFormat.java      |    72 +-
 .../hbase/mapreduce/TestTableInputFormatBase.java  |    14 +-
 .../hbase/mapreduce/TestTableInputFormatScan.java  |    13 +-
 .../mapreduce/TestTableInputFormatScanBase.java    |    38 +-
 .../TestTableInputFormatScanEmptyToAPP.java        |    13 +-
 .../TestTableInputFormatScanEmptyToBBA.java        |    13 +-
 .../TestTableInputFormatScanEmptyToBBB.java        |    13 +-
 .../TestTableInputFormatScanEmptyToEmpty.java      |    13 +-
 .../TestTableInputFormatScanEmptyToOPP.java        |    13 +-
 .../TestTableInputFormatScanOBBToOPP.java          |    15 +-
 .../TestTableInputFormatScanOBBToQPP.java          |    13 +-
 .../TestTableInputFormatScanOPPToEmpty.java        |    13 +-
 .../TestTableInputFormatScanYYXToEmpty.java        |    13 +-
 .../TestTableInputFormatScanYYYToEmpty.java        |    13 +-
 .../TestTableInputFormatScanYZYToEmpty.java        |    13 +-
 .../hadoop/hbase/mapreduce/TestTableMapReduce.java |    51 +-
 .../hbase/mapreduce/TestTableMapReduceBase.java    |    14 +-
 .../hbase/mapreduce/TestTableMapReduceUtil.java    |    28 +-
 .../hbase/mapreduce/TestTableOutputFormat.java     |    50 +-
 .../hbase/mapreduce/TestTableRecordReader.java     |    22 +-
 .../mapreduce/TestTableSnapshotInputFormat.java    |   306 +-
 .../hadoop/hbase/mapreduce/TestTableSplit.java     |    70 +-
 .../hbase/mapreduce/TestTimeRangeMapRed.java       |    30 +-
 .../hadoop/hbase/mapreduce/TestWALInputFormat.java |    19 +-
 .../hadoop/hbase/mapreduce/TestWALPlayer.java      |    44 +-
 .../hbase/mapreduce/TestWALRecordReader.java       |    52 +-
 .../hbase/regionserver/TestCompactionTool.java     |    23 +-
 .../regionserver/TestCompactionToolNpeFix.java     |    33 +-
 .../replication/TestVerifyReplicationAdjunct.java  |    54 +-
 .../TestVerifyReplicationCrossDiffHdfs.java        |    30 +-
 .../TestVerifyReplicationRecompareRunnable.java    |    30 +-
 .../TestVerifyReplicationRpcConnectionUri.java     |    11 +-
 ...tVerifyReplicationSecureClusterCredentials.java |    39 +-
 .../TestVerifyReplicationZkClusterKey.java         |    11 +-
 .../TestVerifyReplicationZkConnectionUri.java      |    11 +-
 .../replication/VerifyReplicationTestBase.java     |   106 +-
 .../hbase/snapshot/ConsecutiveExportsTestBase.java |    36 +
 .../snapshot/ExportFileSystemStateTestBase.java    |    50 +
 ...eSystemStateWithMergeOrSplitRegionTestBase.java |   121 +
 .../hbase/snapshot/ExportSnapshotMiscTestBase.java |    95 +
 .../snapshot/ExportSnapshotRetryTestBase.java      |    62 +
 .../hbase/snapshot/ExportSnapshotTestBase.java     |   359 +
 .../hbase/snapshot/ExportSnapshotTestHelpers.java  |    79 +
 .../hbase/snapshot/ExportWithChecksumTestBase.java |    46 +
 .../hbase/snapshot/TestConsecutiveExports.java     |    39 +
 .../snapshot/TestConsecutiveExportsWithTmpDir.java |    39 +
 .../hbase/snapshot/TestExportFileSystemState.java  |    39 +
 ...xportFileSystemStateWithMergeOrSplitRegion.java |    40 +
 ...ileSystemStateWithMergeOrSplitRegionTmpDir.java |    40 +
 .../TestExportFileSystemStateWithTmpDir.java       |    39 +
 .../hadoop/hbase/snapshot/TestExportSnapshot.java  |   572 -
 .../hbase/snapshot/TestExportSnapshotAdjunct.java  |   172 -
 .../hbase/snapshot/TestExportSnapshotHelpers.java  |    71 +-
 .../hbase/snapshot/TestExportSnapshotMisc.java     |    39 +
 .../snapshot/TestExportSnapshotMiscWithTmpDir.java |    39 +
 .../hbase/snapshot/TestExportSnapshotRetry.java    |    39 +
 .../TestExportSnapshotRetryWithTmpDir.java         |    39 +
 .../snapshot/TestExportSnapshotV1NoCluster.java    |    25 +-
 .../snapshot/TestExportSnapshotV2NoCluster.java    |    22 +-
 .../TestExportSnapshotWithTemporaryDirectory.java  |    65 -
 .../hbase/snapshot/TestExportWithChecksum.java     |    39 +
 .../snapshot/TestExportWithChecksumWithTmpDir.java |    39 +
 .../hbase/snapshot/TestMobExportSnapshot.java      |    70 -
 .../snapshot/TestMobSecureExportSnapshot.java      |    61 -
 .../snapshot/TestSecureConsecutiveExports.java     |    39 +
 .../snapshot/TestSecureExportFileSystemState.java  |    39 +
 ...xportFileSystemStateWithMergeOrSplitRegion.java |    40 +
 .../hbase/snapshot/TestSecureExportSnapshot.java   |    61 -
 .../snapshot/TestSecureExportSnapshotMisc.java     |    39 +
 .../snapshot/TestSecureExportSnapshotRetry.java    |    39 +
 .../snapshot/TestSecureExportWithChecksum.java     |    39 +
 hbase-metrics-api/README.txt                       |     2 +-
 hbase-metrics-api/pom.xml                          |     5 -
 .../hbase/metrics/MetricRegistriesLoader.java      |     2 +-
 .../hbase/metrics/TestMetricRegistriesLoader.java  |    18 +-
 hbase-metrics/pom.xml                              |     5 -
 .../hadoop/hbase/metrics/impl/TestCounterImpl.java |    18 +-
 .../hbase/metrics/impl/TestDropwizardMeter.java    |    16 +-
 .../hbase/metrics/impl/TestFastLongHistogram.java  |    27 +-
 .../hadoop/hbase/metrics/impl/TestGauge.java       |    15 +-
 .../hbase/metrics/impl/TestHistogramImpl.java      |    20 +-
 .../metrics/impl/TestMetricRegistriesImpl.java     |    17 +-
 .../hbase/metrics/impl/TestMetricRegistryImpl.java |    30 +-
 .../hbase/metrics/impl/TestRefCountingMap.java     |    24 +-
 .../hadoop/hbase/metrics/impl/TestTimerImpl.java   |    19 +-
 hbase-procedure/pom.xml                            |     5 -
 .../apache/hadoop/hbase/procedure2/Procedure.java  |     9 +
 .../hadoop/hbase/procedure2/ProcedureExecutor.java |     1 +
 .../hadoop/hbase/procedure2/ProcedureUtil.java     |     8 +
 .../hbase/procedure2/ProcedureTestingUtility.java  |    37 +-
 .../hbase/procedure2/TestChildProcedures.java      |    35 +-
 .../hbase/procedure2/TestForceUpdateProcedure.java |    52 +-
 .../hadoop/hbase/procedure2/TestLockAndQueue.java  |    17 +-
 .../hbase/procedure2/TestProcedureBypass.java      |    38 +-
 .../hbase/procedure2/TestProcedureCleanup.java     |    33 +-
 .../hbase/procedure2/TestProcedureEvents.java      |    25 +-
 .../hbase/procedure2/TestProcedureExecution.java   |    59 +-
 .../hbase/procedure2/TestProcedureExecutor.java    |    33 +-
 .../procedure2/TestProcedureInMemoryChore.java     |    31 +-
 .../hbase/procedure2/TestProcedureMetrics.java     |    72 +-
 .../hbase/procedure2/TestProcedureNonce.java       |    39 +-
 .../hbase/procedure2/TestProcedureRecovery.java    |    29 +-
 .../hbase/procedure2/TestProcedureReplayOrder.java |    33 +-
 .../procedure2/TestProcedureRollbackAIOOB.java     |    36 +-
 .../TestProcedureSchedulerConcurrency.java         |    23 +-
 .../procedure2/TestProcedureSkipPersistence.java   |    24 +-
 .../hbase/procedure2/TestProcedureSuspended.java   |    48 +-
 .../hbase/procedure2/TestProcedureToString.java    |    15 +-
 .../hadoop/hbase/procedure2/TestProcedureUtil.java |    27 +-
 ...rocedureDispatcherUncaughtExceptionHandler.java |    39 +-
 .../hadoop/hbase/procedure2/TestStackIdHoles.java  |    21 +-
 .../procedure2/TestStateMachineProcedure.java      |    28 +-
 .../hbase/procedure2/TestYieldProcedures.java      |    36 +-
 .../hbase/procedure2/store/TestProcedureTree.java  |    16 +-
 .../hbase/procedure2/store/wal/TestBitSetNode.java |    19 +-
 .../store/wal/TestProcedureStoreTracker.java       |    31 +-
 .../store/wal/TestStressWALProcedureStore.java     |    33 +-
 .../store/wal/TestWALProcedureStore.java           |    55 +-
 .../hbase/procedure2/util/TestDelayedUtil.java     |    19 +-
 hbase-protocol-shaded/README.txt                   |    12 +-
 hbase-protocol-shaded/pom.xml                      |    86 +-
 .../src/main/protobuf/HBase.proto                  |    33 +
 .../src/main/protobuf/server/ClusterStatus.proto   |    19 +-
 .../src/main/protobuf/server/ManagedKeys.proto     |    44 +
 .../src/main/protobuf/server/Procedure.proto       |     3 +
 .../main/protobuf/server/io/BucketCacheEntry.proto |     3 +
 .../src/main/protobuf/server/io/HFile.proto        |     3 +
 .../src/main/protobuf/server/master/Master.proto   |    18 +
 .../src/main/protobuf/server/region/Admin.proto    |     9 +
 .../protobuf/server/region/StoreFileTracker.proto  |     2 +
 hbase-replication/pom.xml                          |     5 -
 .../hbase/replication/ReplicationQueueStorage.java |     9 +
 .../replication/TableReplicationQueueStorage.java  |    53 +-
 .../ReplicationPeerStorageTestBase.java            |    18 +-
 .../replication/TestCopyReplicationPeers.java      |    23 +-
 .../replication/TestFSReplicationPeerStorage.java  |    21 +-
 .../replication/TestReplicationStateBasic.java     |    10 +-
 .../replication/TestReplicationStateZKImpl.java    |    27 +-
 .../replication/TestZKReplicationPeerStorage.java  |    21 +-
 .../replication/TestZKReplicationQueueStorage.java |    52 +-
 .../src/main/resources/META-INF/LICENSE.vm         |    26 +-
 .../src/main/resources/META-INF/NOTICE.vm          |    26 +-
 .../src/main/resources/supplemental-models.xml     |   391 -
 hbase-rest/pom.xml                                 |     5 -
 .../hadoop/hbase/rest/MultiRowResultReader.java    |     6 +-
 .../org/apache/hadoop/hbase/rest/RESTServer.java   |     6 +-
 .../apache/hadoop/hbase/rest/TableResource.java    |    11 +-
 .../java/org/apache/hadoop/hbase/rest/package.html |     2 +-
 .../src/main/resources/hbase-webapps/rest/rest.jsp |     2 +-
 .../org/apache/hadoop/hbase/rest/DummyFilter.java  |     2 +-
 .../hbase/rest/MultiRowResourceTestBase.java       |   465 +
 .../apache/hadoop/hbase/rest/RowResourceBase.java  |    18 +-
 .../hadoop/hbase/rest/SchemaResourceTestBase.java  |   237 +
 .../apache/hadoop/hbase/rest/TestDeleteRow.java    |    15 +-
 .../hadoop/hbase/rest/TestGZIPResponseWrapper.java |    18 +-
 .../hadoop/hbase/rest/TestGetAndPutResource.java   |    32 +-
 .../apache/hadoop/hbase/rest/TestGzipFilter.java   |    28 +-
 .../hadoop/hbase/rest/TestMultiRowResource.java    |   417 -
 .../rest/TestMultiRowResourceCsrfDisabled.java     |    34 +
 .../rest/TestMultiRowResourceCsrfEnabled.java      |    34 +
 .../hbase/rest/TestNamespacesInstanceResource.java |    59 +-
 .../hadoop/hbase/rest/TestNamespacesResource.java  |    24 +-
 .../hadoop/hbase/rest/TestRESTServerSSL.java       |    38 +-
 .../hadoop/hbase/rest/TestResourceFilter.java      |    23 +-
 .../hadoop/hbase/rest/TestScannerResource.java     |    34 +-
 .../hadoop/hbase/rest/TestScannersWithFilters.java |    59 +-
 .../hadoop/hbase/rest/TestScannersWithLabels.java  |    24 +-
 .../hadoop/hbase/rest/TestSchemaResource.java      |   257 -
 .../hbase/rest/TestSchemaResourceCsrfDisabled.java |    29 +
 .../hbase/rest/TestSchemaResourceCsrfEnabled.java  |    29 +
 .../hadoop/hbase/rest/TestSecureRESTServer.java    |    31 +-
 .../hbase/rest/TestSecurityHeadersFilter.java      |    17 +-
 .../hadoop/hbase/rest/TestStatusResource.java      |    35 +-
 .../hadoop/hbase/rest/TestTableResource.java       |    34 +-
 .../apache/hadoop/hbase/rest/TestTableScan.java    |    36 +-
 .../hadoop/hbase/rest/TestVersionResource.java     |    30 +-
 .../hbase/rest/client/TestRemoteAdminRetries.java  |    24 +-
 .../hbase/rest/client/TestRemoteHTableRetries.java |    24 +-
 .../hadoop/hbase/rest/client/TestRemoteTable.java  |    43 +-
 .../hadoop/hbase/rest/client/TestXmlParsing.java   |    29 +-
 .../hadoop/hbase/rest/model/TestCellModel.java     |    24 +-
 .../hadoop/hbase/rest/model/TestCellSetModel.java  |    28 +-
 .../hbase/rest/model/TestColumnSchemaModel.java    |    22 +-
 .../hadoop/hbase/rest/model/TestModelBase.java     |     4 +-
 .../rest/model/TestNamespacesInstanceModel.java    |    17 +-
 .../hbase/rest/model/TestNamespacesModel.java      |    17 +-
 .../hadoop/hbase/rest/model/TestRowModel.java      |    25 +-
 .../hadoop/hbase/rest/model/TestScannerModel.java  |    35 +-
 .../rest/model/TestStorageClusterStatusModel.java  |    19 +-
 .../rest/model/TestStorageClusterVersionModel.java |    15 +-
 .../hbase/rest/model/TestTableInfoModel.java       |    22 +-
 .../hbase/rest/model/TestTableListModel.java       |    15 +-
 .../hbase/rest/model/TestTableRegionModel.java     |    21 +-
 .../hbase/rest/model/TestTableSchemaModel.java     |    24 +-
 .../hadoop/hbase/rest/model/TestVersionModel.java  |    13 +-
 hbase-server/pom.xml                               |    91 +-
 .../hadoop/hbase/tmpl/tool/CanaryStatusTmpl.jamon  |   158 -
 .../apache/hadoop/hbase/ExecutorStatusChore.java   |     2 +-
 .../apache/hadoop/hbase/HBaseRpcServicesBase.java  |   110 +-
 .../org/apache/hadoop/hbase/HBaseServerBase.java   |    62 +-
 .../hadoop/hbase/MockRegionServerServices.java     |    24 +
 .../main/java/org/apache/hadoop/hbase/Server.java  |     4 +
 .../AsyncRegionReplicationRetryingCaller.java      |    18 +-
 .../hbase/client/ClientSideRegionScanner.java      |    16 +-
 .../ZKSplitLogManagerCoordination.java             |     2 +-
 .../hadoop/hbase/coprocessor/BulkLoadObserver.java |    24 +-
 .../hbase/coprocessor/ClientMetaCoprocessor.java   |    32 +
 .../ClientMetaCoprocessorEnvironment.java          |    29 +
 .../coprocessor/ClientMetaCoprocessorHost.java     |   212 +
 .../hbase/coprocessor/ClientMetaObserver.java      |   153 +
 .../hadoop/hbase/coprocessor/CoprocessorHost.java  |    86 +-
 .../coprocessor/MultiRowMutationEndpoint.java      |     2 +-
 .../hadoop/hbase/coprocessor/ObserverContext.java  |    20 +-
 .../hbase/coprocessor/ObserverContextImpl.java     |    22 +-
 .../hbase/coprocessor/ObserverRpcCallContext.java  |    44 +
 .../coprocessor/ObserverRpcCallContextImpl.java    |    44 +
 .../apache/hadoop/hbase/filter/FilterWrapper.java  |    20 +
 .../java/org/apache/hadoop/hbase/io/HFileLink.java |     2 +-
 .../java/org/apache/hadoop/hbase/io/Reference.java |     2 +-
 .../hadoop/hbase/io/hfile/BlockCacheFactory.java   |     2 +-
 .../hadoop/hbase/io/hfile/BlockCacheKey.java       |   123 +-
 .../hadoop/hbase/io/hfile/BlockCacheUtil.java      |     4 +-
 .../apache/hadoop/hbase/io/hfile/CacheConfig.java  |    44 +-
 .../hadoop/hbase/io/hfile/FixedFileTrailer.java    |    62 +-
 .../org/apache/hadoop/hbase/io/hfile/HFile.java    |     4 +-
 .../hadoop/hbase/io/hfile/HFileBlockIndex.java     |    10 +-
 .../apache/hadoop/hbase/io/hfile/HFileInfo.java    |    42 +-
 .../hadoop/hbase/io/hfile/HFilePreadReader.java    |     2 +-
 .../hadoop/hbase/io/hfile/HFileReaderImpl.java     |     2 +-
 .../hadoop/hbase/io/hfile/HFileWriterImpl.java     |    32 +-
 .../hadoop/hbase/io/hfile/ReaderContext.java       |    17 +-
 .../hbase/io/hfile/ReaderContextBuilder.java       |    19 +-
 .../hadoop/hbase/io/hfile/bucket/BucketCache.java  |   203 +-
 .../hbase/io/hfile/bucket/BucketCacheStats.java    |     2 +-
 .../hadoop/hbase/io/hfile/bucket/BucketEntry.java  |     2 +-
 .../hbase/io/hfile/bucket/BucketProtoUtils.java    |    18 +-
 .../apache/hadoop/hbase/io/hfile/package-info.java |     6 +-
 .../hadoop/hbase/io/util/MemorySizeUtil.java       |    65 +-
 .../hadoop/hbase/ipc/MetaRWQueueRpcExecutor.java   |     4 +-
 .../hadoop/hbase/ipc/RWQueueRpcExecutor.java       |     4 +-
 .../org/apache/hadoop/hbase/ipc/RpcExecutor.java   |    24 +-
 .../org/apache/hadoop/hbase/ipc/RpcServer.java     |    15 +-
 .../hadoop/hbase/ipc/ServerRpcConnection.java      |    13 +-
 .../hadoop/hbase/ipc/SimpleRpcScheduler.java       |     8 +-
 .../hadoop/hbase/keymeta/KeyManagementService.java |    67 +
 .../hadoop/hbase/keymeta/KeymetaAdminImpl.java     |    93 +
 .../hadoop/hbase/keymeta/KeymetaTableAccessor.java |    36 +
 .../hadoop/hbase/keymeta/ManagedKeyDataCache.java  |    56 +
 .../hadoop/hbase/keymeta/SystemKeyAccessor.java    |    29 +
 .../hadoop/hbase/keymeta/SystemKeyCache.java       |    32 +
 .../org/apache/hadoop/hbase/master/DeadServer.java |     9 +
 .../org/apache/hadoop/hbase/master/HMaster.java    |   234 +-
 .../hadoop/hbase/master/MasterCoprocessorHost.java |     9 +-
 .../hadoop/hbase/master/MasterRpcServices.java     |    46 +
 .../apache/hadoop/hbase/master/MasterServices.java |     6 +-
 .../hadoop/hbase/master/RegionServerTracker.java   |    26 +-
 .../apache/hadoop/hbase/master/ServerManager.java  |     9 +-
 .../hbase/master/assignment/AssignmentManager.java |   132 +-
 .../master/assignment/AssignmentManagerUtil.java   |     8 +-
 .../assignment/MergeTableRegionsProcedure.java     |     8 +-
 .../assignment/RegionInTransitionTracker.java      |   156 +
 .../assignment/RegionRemoteProcedureBase.java      |     3 +
 .../hbase/master/assignment/RegionStateNode.java   |    22 +-
 .../hbase/master/assignment/RegionStates.java      |    95 +-
 .../assignment/SplitTableRegionProcedure.java      |   130 +-
 .../assignment/TransitRegionStateProcedure.java    |     3 +
 .../hadoop/hbase/master/cleaner/LogCleaner.java    |     7 +
 .../hbase/master/http/MasterDumpServlet.java       |    12 +-
 .../hadoop/hbase/master/janitor/MetaFixer.java     |    26 +
 .../master/procedure/CreateTableProcedure.java     |     6 +-
 .../master/procedure/FlushRegionProcedure.java     |     6 +-
 .../hbase/master/procedure/InitMetaProcedure.java  |    13 +-
 .../master/procedure/ModifyTableProcedure.java     |    26 +-
 .../hbase/master/procedure/ProcedureSyncWait.java  |     2 +-
 .../master/procedure/RSProcedureDispatcher.java    |     4 +-
 .../procedure/ReopenTableRegionsProcedure.java     |   169 +-
 .../master/procedure/ServerCrashProcedure.java     |     3 +
 .../master/procedure/TruncateRegionProcedure.java  |    15 +
 .../hadoop/hbase/master/region/MasterRegion.java   |    42 +-
 .../hbase/master/region/MasterRegionFactory.java   |     4 +-
 .../hbase/master/region/MasterRegionParams.java    |     8 +-
 .../OfflineTableReplicationQueueStorage.java       |     6 +
 .../hbase/master/snapshot/SnapshotManager.java     |     5 +-
 .../hadoop/hbase/mob/DefaultMobStoreCompactor.java |     5 +-
 .../java/org/apache/hadoop/hbase/mob/MobCell.java  |    11 +
 .../org/apache/hadoop/hbase/mob/MobConstants.java  |     6 +
 .../hadoop/hbase/mob/MobFileCleanerChore.java      |   142 +-
 .../hadoop/hbase/mob/MobFileCompactionChore.java   |    12 +-
 .../hadoop/hbase/monitoring/StateDumpServlet.java  |    20 +
 .../store/region/RegionProcedureStore.java         |     7 +-
 .../hadoop/hbase/quotas/DefaultOperationQuota.java |     5 +-
 .../hadoop/hbase/regionserver/CompactSplit.java    |     3 +-
 .../hbase/regionserver/DataTieringManager.java     |   196 +-
 .../hadoop/hbase/regionserver/HMobStore.java       |     1 +
 .../apache/hadoop/hbase/regionserver/HRegion.java  |   273 +-
 .../hbase/regionserver/HRegionFileSystem.java      |    67 +-
 .../hadoop/hbase/regionserver/HRegionServer.java   |    50 +-
 .../apache/hadoop/hbase/regionserver/HStore.java   |    21 +-
 .../hadoop/hbase/regionserver/HStoreFile.java      |    35 +-
 .../hbase/regionserver/HeapMemoryManager.java      |    24 +-
 .../hadoop/hbase/regionserver/KeyValueHeap.java    |    19 +
 .../hadoop/hbase/regionserver/KeyValueScanner.java |     7 +
 .../hbase/regionserver/MetricsRegionServer.java    |    13 +-
 .../MetricsRegionServerWrapperImpl.java            |    40 +
 .../regionserver/MetricsRegionWrapperImpl.java     |    48 +-
 .../hadoop/hbase/regionserver/MetricsTable.java    |     8 -
 .../MetricsTableWrapperAggregateImpl.java          |    40 +-
 .../hadoop/hbase/regionserver/MobStoreScanner.java |    18 +
 .../hbase/regionserver/NonLazyKeyValueScanner.java |    11 +
 .../hadoop/hbase/regionserver/RSRpcServices.java   |    39 +
 .../hbase/regionserver/RegionCoprocessorHost.java  |    12 +-
 .../hadoop/hbase/regionserver/RegionScanner.java   |    11 +
 .../hbase/regionserver/RegionScannerImpl.java      |   119 +-
 .../hbase/regionserver/RegionServerServices.java   |     4 +-
 .../regionserver/RegionServicesForStores.java      |    10 +
 .../regionserver/ReversedMobStoreScanner.java      |    18 +
 .../hadoop/hbase/regionserver/ScannerContext.java  |    12 +
 .../hadoop/hbase/regionserver/SegmentScanner.java  |    11 +
 .../hadoop/hbase/regionserver/SplitRequest.java    |     2 +-
 .../hadoop/hbase/regionserver/StoreEngine.java     |    11 +-
 .../hadoop/hbase/regionserver/StoreFileInfo.java   |    66 +-
 .../hbase/regionserver/StoreFileScanner.java       |    16 +
 .../hadoop/hbase/regionserver/StoreScanner.java    |    43 +-
 .../hadoop/hbase/regionserver/StoreUtils.java      |    11 +
 .../hbase/regionserver/compactions/Compactor.java  |    49 +-
 .../RowKeyDateTieringValueProvider.java            |   148 +
 .../hbase/regionserver/http/RSDumpServlet.java     |    14 +-
 .../regionserver/querymatcher/DeleteTracker.java   |    14 +
 .../MinorCompactionScanQueryMatcher.java           |    14 +
 .../querymatcher/NormalUserScanQueryMatcher.java   |    50 +
 .../querymatcher/RawScanQueryMatcher.java          |     2 +-
 .../querymatcher/ScanDeleteTracker.java            |    22 +
 .../querymatcher/ScanQueryMatcher.java             |    36 +-
 .../querymatcher/UserScanQueryMatcher.java         |    93 +-
 .../FileBasedStoreFileTracker.java                 |    86 +-
 .../storefiletracker/StoreFileListFile.java        |     2 +-
 .../storefiletracker/StoreFileTracker.java         |    27 +-
 .../storefiletracker/StoreFileTrackerBase.java     |    47 +-
 .../storefiletracker/StoreFileTrackerFactory.java  |    11 +-
 .../hbase/regionserver/wal/AbstractFSWAL.java      |     6 +-
 .../regionserver/PeerProcedureHandlerImpl.java     |    29 +
 .../regionserver/ReplicationSource.java            |     4 +
 .../regionserver/ReplicationSourceLogQueue.java    |     2 +-
 .../regionserver/ReplicationSourceManager.java     |    14 +-
 .../regionserver/ReplicationSourceShipper.java     |    11 +-
 .../regionserver/ReplicationSourceWALReader.java   |     5 +
 .../regionserver/ReplicationSyncUp.java            |     6 +
 .../SerialReplicationSourceWALReader.java          |     5 +
 .../hbase/rsgroup/RSGroupBasedLoadBalancer.java    |    78 +-
 .../hbase/rsgroup/RSGroupInfoManagerImpl.java      |     4 +-
 .../apache/hadoop/hbase/security/SecurityUtil.java |   112 +-
 .../hbase/security/access/AccessController.java    |     3 +-
 .../access/SnapshotScannerHDFSAclController.java   |     3 +-
 .../SaslServerAuthenticationProviders.java         |   105 +-
 .../hbase/snapshot/RestoreSnapshotHelper.java      |   108 +-
 .../hadoop/hbase/tool/BulkLoadHFilesTool.java      |     2 +-
 .../hadoop/hbase/tool/CanaryStatusServlet.java     |    22 +-
 .../org/apache/hadoop/hbase/tool/CanaryTool.java   |     8 +-
 .../apache/hadoop/hbase/util/CanaryStatusUtil.java |    42 +
 .../hbase/util/CoprocessorConfigurationUtil.java   |    77 +-
 .../java/org/apache/hadoop/hbase/util/FSUtils.java |    30 +-
 .../apache/hadoop/hbase/util/HFileArchiveUtil.java |    12 +
 .../hadoop/hbase/util/ModifyRegionUtils.java       |    32 +-
 .../hadoop/hbase/util/TableDescriptorChecker.java  |     7 +-
 .../wal/AbstractRecoveredEditsOutputSink.java      |     2 +-
 .../org/apache/hadoop/hbase/wal/WALFactory.java    |    34 +-
 .../apache/hadoop/hbase/replication/package.html   |     2 +-
 hbase-server/src/main/javadoc/overview.html        |    13 +-
 .../main/resources/hbase-webapps/canary/canary.jsp |   132 +-
 .../master/assignmentManagerStatus.jsp             |     2 +-
 .../hbase-webapps/master/catalogTables.jsp         |     5 +-
 .../hbase-webapps/master/processMaster.jsp         |    59 +-
 .../resources/hbase-webapps/master/rsgroup.jsp     |     2 +-
 .../main/resources/hbase-webapps/master/table.jsp  |    58 +-
 .../resources/hbase-webapps/master/warnings.jsp    |     2 +-
 .../regionserver/blockCacheBaseInfo.jsp            |     2 +-
 .../regionserver/blockCacheConfig.jsp              |    19 +-
 .../hbase-webapps/regionserver/blockCacheLevel.jsp |     2 +-
 .../hbase-webapps/regionserver/processRS.jsp       |    61 +-
 .../regionserver/regionListStoreStats.jsp          |     2 +
 .../hbase-webapps/regionserver/regionserver.jsp    |     1 -
 .../regionserver/rsOperationDetails.jsp            |     4 +-
 .../hadoop/hbase/AcidGuaranteesTestBase.java       |    77 +-
 .../apache/hadoop/hbase/ConnectionExtension.java   |   133 +
 .../org/apache/hadoop/hbase/ConnectionRule.java    |     7 +
 .../org/apache/hadoop/hbase/HBaseTestingUtil.java  |   131 +-
 .../apache/hadoop/hbase/MiniClusterExtension.java  |   157 +
 .../org/apache/hadoop/hbase/MiniClusterRule.java   |     7 +
 .../hadoop/hbase/SingleProcessHBaseCluster.java    |    42 +-
 .../TestAcidGuaranteesWithAdaptivePolicy.java      |    35 -
 .../hbase/TestAcidGuaranteesWithBasicPolicy.java   |    35 -
 .../hbase/TestAcidGuaranteesWithEagerPolicy.java   |    35 -
 .../TestAcidGuaranteesWithNoInMemCompaction.java   |    35 -
 .../org/apache/hadoop/hbase/TestCacheEviction.java |    34 +-
 .../apache/hadoop/hbase/TestCachedClusterId.java   |    22 +-
 .../apache/hadoop/hbase/TestCheckTestClasses.java  |     3 +
 .../hadoop/hbase/TestClientClusterStatus.java      |    77 +-
 .../hadoop/hbase/TestClientOperationTimeout.java   |    26 +-
 .../apache/hadoop/hbase/TestClusterBootOrder.java  |    22 +-
 .../hadoop/hbase/TestClusterPortAssignment.java    |    39 +-
 .../TestColumnFamilyDescriptorDefaultVersions.java |    35 +-
 .../TestCustomPriorityRpcControllerFactory.java    |    22 +-
 .../hadoop/hbase/TestExecutorStatusChore.java      |    16 +-
 .../hbase/TestFSTableDescriptorForceCreation.java  |    59 +-
 .../hadoop/hbase/TestFullLogReconstruction.java    |    26 +-
 .../org/apache/hadoop/hbase/TestGetAtomicity.java  |    36 +
 .../hadoop/hbase/TestGlobalMemStoreSize.java       |    49 +-
 .../org/apache/hadoop/hbase/TestHBaseMetaEdit.java |    32 +-
 .../hadoop/hbase/TestHBaseOnOtherDfsCluster.java   |    29 +-
 .../apache/hadoop/hbase/TestHBaseTestingUtil.java  |    40 +-
 .../apache/hadoop/hbase/TestHRegionLocation.java   |    20 +-
 .../org/apache/hadoop/hbase/TestIOFencing.java     |    26 +-
 .../hbase/TestIPv6NIOServerSocketChannel.java      |    20 +-
 .../org/apache/hadoop/hbase/TestInfoServers.java   |    42 +-
 .../hadoop/hbase/TestJMXConnectorServer.java       |    38 +-
 .../org/apache/hadoop/hbase/TestJMXListener.java   |    34 +-
 .../apache/hadoop/hbase/TestLocalHBaseCluster.java |    15 +-
 .../apache/hadoop/hbase/TestMetaTableAccessor.java |    99 +-
 .../apache/hadoop/hbase/TestMetaTableLocator.java  |    43 +-
 .../hbase/TestMetaUpdatesGoToPriorityQueue.java    |    22 +-
 .../apache/hadoop/hbase/TestMixedAtomicity.java    |    36 +
 .../apache/hadoop/hbase/TestMobGetAtomicity.java   |    36 +
 .../apache/hadoop/hbase/TestMobMixedAtomicity.java |    36 +
 .../apache/hadoop/hbase/TestMobScanAtomicity.java  |    36 +
 .../apache/hadoop/hbase/TestMovedRegionCache.java  |    46 +-
 .../org/apache/hadoop/hbase/TestMultiVersions.java |    64 +-
 .../org/apache/hadoop/hbase/TestNamespace.java     |    97 +-
 .../hadoop/hbase/TestNodeHealthCheckChore.java     |    26 +-
 .../hbase/TestPartialResultsFromClientSide.java    |   131 +-
 .../org/apache/hadoop/hbase/TestRegionMetrics.java |    37 +-
 .../apache/hadoop/hbase/TestRegionRebalancing.java |    49 +-
 .../hbase/TestRegionReplicationLagEvaluation.java  |    22 +-
 .../org/apache/hadoop/hbase/TestScanAtomicity.java |    36 +
 .../TestSequenceIdMonotonicallyIncreasing.java     |    26 +-
 .../org/apache/hadoop/hbase/TestSerialization.java |    20 +-
 .../hadoop/hbase/TestServerInternalsTracing.java   |    90 +-
 .../org/apache/hadoop/hbase/TestServerMetrics.java |    16 +-
 .../TestServerSideScanMetricsFromClientSide.java   |    41 +-
 .../java/org/apache/hadoop/hbase/TestSize.java     |    13 +-
 .../org/apache/hadoop/hbase/TestSplitMerge.java    |    26 +-
 .../hadoop/hbase/TestSplitMergeQuotaTable.java     |    82 +-
 .../apache/hadoop/hbase/TestTagRewriteCell.java    |    22 +-
 .../org/apache/hadoop/hbase/TestZooKeeper.java     |    75 +-
 .../org/apache/hadoop/hbase/TimestampTestBase.java |    24 +-
 .../hadoop/hbase/backup/TestHFileArchiving.java    |   132 +-
 .../example/TestZooKeeperTableArchiveClient.java   |    62 +-
 .../AbstractTestAsyncTableRegionReplicasRead.java  |    46 +-
 .../hbase/client/AbstractTestAsyncTableScan.java   |   166 +-
 .../client/AbstractTestCIOperationTimeout.java     |    10 +-
 .../hbase/client/AbstractTestCIRpcTimeout.java     |    10 +-
 .../hadoop/hbase/client/AbstractTestCITimeout.java |    16 +-
 .../hbase/client/AbstractTestRegionLocator.java    |    10 +-
 .../client/AbstractTestResultScannerCursor.java    |     8 +-
 .../hbase/client/AbstractTestScanCursor.java       |     8 +-
 ...eWithDifferentConnectionRegistriesTestBase.java |   142 +
 .../hbase/client/ClientPushbackTestBase.java       |    40 +-
 ...shotFromClientAfterSplittingRegionTestBase.java |    37 +-
 ...hotFromClientCloneLinksAfterDeleteTestBase.java |     8 +-
 .../CloneSnapshotFromClientErrorTestBase.java      |    18 +-
 .../CloneSnapshotFromClientNormalTestBase.java     |    12 +-
 .../client/CloneSnapshotFromClientTestBase.java    |    51 +-
 .../hbase/client/FromClientSide3TestBase.java      |  1188 -
 .../hadoop/hbase/client/FromClientSideBase.java    |  1031 -
 .../FromClientSideScanExcpetionTestBase.java       |   231 +
 .../hadoop/hbase/client/FromClientSideTest1.java   |  1831 +
 .../hadoop/hbase/client/FromClientSideTest2.java   |   518 +
 .../hadoop/hbase/client/FromClientSideTest3.java   |   574 +
 .../hadoop/hbase/client/FromClientSideTest4.java   |  1173 +
 .../hadoop/hbase/client/FromClientSideTest5.java   |  1465 +
 .../hbase/client/FromClientSideTestBase.java       |  1022 +
 .../client/FromClientSideTestCheckAndMutate.java   |   337 +
 ...mClientSideTestFilterAcrossMultipleRegions.java |    93 +
 ...bleExistsMethodMultipleRegionsMultipleGets.java |    93 +
 ...HTableExistsMethodMultipleRegionsSingleGet.java |    53 +
 .../client/FromClientSideTestMultiRowMutation.java |   385 +
 ...lientSideTestPutThenGetWithMultipleThreads.java |    90 +
 .../client/FromClientSideTestReverseScan.java      |   669 +
 .../hbase/client/MetaWithReplicasTestBase.java     |    22 +-
 .../hbase/client/RegionReplicaTestHelper.java      |     6 +-
 ...hotFromClientAfterSplittingRegionsTestBase.java |     8 +-
 ...oreSnapshotFromClientAfterTruncateTestBase.java |    42 +-
 .../RestoreSnapshotFromClientCloneTestBase.java    |    18 +-
 ...apshotFromClientGetCompactionStateTestBase.java |    10 +-
 ...toreSnapshotFromClientSchemaChangeTestBase.java |    12 +-
 .../RestoreSnapshotFromClientSimpleTestBase.java   |    22 +-
 .../client/RestoreSnapshotFromClientTestBase.java  |    47 +-
 .../client/SnapshotCloneIndependenceTestBase.java  |   365 +
 .../hbase/client/SnapshotFromClientTestBase.java   |   459 +
 .../client/SnapshotTemporaryDirectoryTestBase.java |   452 +
 .../hbase/client/SnapshotWithAclTestBase.java      |    73 +-
 .../org/apache/hadoop/hbase/client/TestAdmin.java  |   105 +-
 .../org/apache/hadoop/hbase/client/TestAdmin1.java |    67 +-
 .../org/apache/hadoop/hbase/client/TestAdmin2.java |   177 +-
 .../org/apache/hadoop/hbase/client/TestAdmin3.java |    75 +-
 .../org/apache/hadoop/hbase/client/TestAdmin4.java |    26 +-
 .../apache/hadoop/hbase/client/TestAdminBase.java  |    26 +-
 .../client/TestAllowPartialScanResultCache.java    |    25 +-
 .../hbase/client/TestAlwaysSetScannerId.java       |    25 +-
 .../hbase/client/TestAppendFromClientSide.java     |    37 +-
 .../client/TestAsyncAccessControlAdminApi.java     |    41 +-
 .../hadoop/hbase/client/TestAsyncAdminBase.java    |    39 +-
 .../hadoop/hbase/client/TestAsyncAdminBuilder.java |    58 +-
 .../client/TestAsyncAdminClearMasterStubCache.java |    47 +-
 .../hbase/client/TestAsyncAdminMasterSwitch.java   |    39 +-
 .../TestAsyncAdminModifyStoreFileTracker.java      |    51 +-
 .../client/TestAsyncAdminWithRegionReplicas.java   |    45 +-
 .../hbase/client/TestAsyncBufferMutator.java       |    56 +-
 .../TestAsyncClientPauseForRpcThrottling.java      |    32 +-
 .../TestAsyncClientPauseForServerOverloaded.java   |    35 +-
 .../hbase/client/TestAsyncClientPushback.java      |    19 +-
 .../hbase/client/TestAsyncClusterAdminApi.java     |    62 +-
 .../hbase/client/TestAsyncClusterAdminApi2.java    |    45 +-
 .../client/TestAsyncDecommissionAdminApi.java      |    41 +-
 .../hbase/client/TestAsyncMetaRegionLocator.java   |   281 +-
 .../hbase/client/TestAsyncNamespaceAdminApi.java   |    45 +-
 .../client/TestAsyncNonMetaRegionLocator.java      |    90 +-
 ...stAsyncNonMetaRegionLocatorConcurrenyLimit.java |    29 +-
 .../hbase/client/TestAsyncProcedureAdminApi.java   |    54 +-
 .../hbase/client/TestAsyncQuotaAdminApi.java       |    45 +-
 .../hbase/client/TestAsyncRegionAdminApi.java      |    82 +-
 .../hbase/client/TestAsyncRegionAdminApi2.java     |    77 +-
 .../hbase/client/TestAsyncRegionLocator.java       |    31 +-
 .../hbase/client/TestAsyncReplicationAdminApi.java |   105 +-
 .../TestAsyncReplicationAdminApiWithClusters.java  |    78 +-
 .../hbase/client/TestAsyncResultScannerCursor.java |    21 +-
 .../TestAsyncSingleRequestRpcRetryingCaller.java   |    27 +-
 .../hbase/client/TestAsyncSnapshotAdminApi.java    |    63 +-
 .../apache/hadoop/hbase/client/TestAsyncTable.java |   281 +-
 .../hbase/client/TestAsyncTableAdminApi.java       |   114 +-
 .../hbase/client/TestAsyncTableAdminApi2.java      |   100 +-
 .../hbase/client/TestAsyncTableAdminApi3.java      |    83 +-
 .../hadoop/hbase/client/TestAsyncTableBatch.java   |   216 +-
 .../TestAsyncTableBatchRetryImmediately.java       |    25 +-
 .../client/TestAsyncTableGetMultiThreaded.java     |    26 +-
 ...ncTableGetMultiThreadedWithBasicCompaction.java |    19 +-
 ...ncTableGetMultiThreadedWithEagerCompaction.java |    19 +-
 .../hbase/client/TestAsyncTableLocatePrefetch.java |    27 +-
 .../TestAsyncTableLocateRegionForDeletedTable.java |    25 +-
 .../hbase/client/TestAsyncTableNoncedRetry.java    |    41 +-
 .../hbase/client/TestAsyncTableQueryMetrics.java   |    58 +-
 .../hbase/client/TestAsyncTableRSCrashPublish.java |    23 +-
 .../hbase/client/TestAsyncTableRegionLocator.java  |    19 +-
 .../client/TestAsyncTableRegionReplicasGet.java    |    25 +-
 .../client/TestAsyncTableRegionReplicasScan.java   |    29 +-
 .../hadoop/hbase/client/TestAsyncTableScan.java    |    57 +-
 .../hadoop/hbase/client/TestAsyncTableScanAll.java |    54 +-
 .../hbase/client/TestAsyncTableScanException.java  |    49 +-
 .../hbase/client/TestAsyncTableScanMetrics.java    |    81 +-
 ...AsyncTableScanMetricsWithScannerSuspending.java |    31 +-
 .../hbase/client/TestAsyncTableScanRenewLease.java |    23 +-
 .../hadoop/hbase/client/TestAsyncTableScanner.java |    58 +-
 .../TestAsyncTableScannerCloseWhileSuspending.java |    23 +-
 .../client/TestAsyncTableUseMetaReplicas.java      |    34 +-
 .../hadoop/hbase/client/TestAsyncToolAdminApi.java |    43 +-
 .../TestAvoidCellReferencesIntoShippedBlocks.java  |    55 +-
 ...ReadWriteWithDifferentConnectionRegistries.java |   154 +-
 .../hbase/client/TestBatchScanResultCache.java     |    25 +-
 .../hbase/client/TestBlockEvictionFromClient.java  |   159 +-
 .../hbase/client/TestBootstrapNodeUpdate.java      |    25 +-
 .../hadoop/hbase/client/TestBufferedMutator.java   |    35 +-
 .../hbase/client/TestCIDeleteOperationTimeout.java |    11 +-
 .../hbase/client/TestCIDeleteRpcTimeout.java       |    11 +-
 .../hbase/client/TestCIGetOperationTimeout.java    |    11 +-
 .../hadoop/hbase/client/TestCIGetRpcTimeout.java   |    11 +-
 .../hbase/client/TestCIIncrementRpcTimeout.java    |    11 +-
 .../hbase/client/TestCIPutOperationTimeout.java    |    11 +-
 .../hadoop/hbase/client/TestCIPutRpcTimeout.java   |    11 +-
 .../apache/hadoop/hbase/client/TestCISleep.java    |    21 +-
 ...estCatalogReplicaLoadBalanceSimpleSelector.java |    25 +-
 .../hadoop/hbase/client/TestCheckAndMutate.java    |    86 +-
 .../client/TestCheckAndMutateWithByteBuff.java     |    44 +-
 .../hbase/client/TestCleanupMetaReplica.java       |    19 +-
 .../TestCleanupMetaReplicaThroughConfig.java       |    19 +-
 .../hbase/client/TestClientDataStructureMisc.java  |   118 +
 .../hbase/client/TestClientOperationInterrupt.java |    33 +-
 .../hbase/client/TestClientScannerTimeouts.java    |   106 +-
 .../hbase/client/TestClientSideRegionScanner.java  |   212 +-
 .../hbase/client/TestClientTableMetrics.java       |    32 +-
 .../hadoop/hbase/client/TestClientTimeouts.java    |    25 +-
 ...loneSnapshotFromClientAfterSplittingRegion.java |    36 +-
 ...oneSnapshotFromClientCloneLinksAfterDelete.java |    42 +-
 .../TestCloneSnapshotFromClientCustomSFT.java      |    26 +-
 .../client/TestCloneSnapshotFromClientError.java   |    36 +-
 .../client/TestCloneSnapshotFromClientNormal.java  |    36 +-
 .../client/TestCompleteResultScanResultCache.java  |    25 +-
 .../apache/hadoop/hbase/client/TestConnection.java |    88 +-
 .../hbase/client/TestConnectionAttributes.java     |    23 +-
 .../hbase/client/TestConnectionReconnect.java      |   115 +
 .../hadoop/hbase/client/TestConnectionUtils.java   |    15 +-
 .../hbase/client/TestDropTimeoutRequest.java       |    37 +-
 .../hadoop/hbase/client/TestEnableTable.java       |    35 +-
 .../client/TestFailedMetaReplicaAssigment.java     |    27 +-
 .../hbase/client/TestFallbackToUseReplay.java      |    23 +-
 .../hadoop/hbase/client/TestFlushFromClient.java   |    48 +-
 ...tFlushFromClientWithDisabledFlushProcedure.java |    43 +-
 .../hadoop/hbase/client/TestFromClientSide.java    |  1973 -
 .../hadoop/hbase/client/TestFromClientSide1.java   |    40 +
 .../client/TestFromClientSide1WithCoprocessor.java |    42 +
 .../hadoop/hbase/client/TestFromClientSide2.java   |    40 +
 .../client/TestFromClientSide2WithCoprocessor.java |    42 +
 .../hadoop/hbase/client/TestFromClientSide3.java   |    11 +-
 .../client/TestFromClientSide3WithCoprocessor.java |    42 +
 .../hadoop/hbase/client/TestFromClientSide4.java   |  1335 +-
 .../client/TestFromClientSide4WithCoprocessor.java |    47 +
 .../hadoop/hbase/client/TestFromClientSide5.java   |  2885 +-
 .../client/TestFromClientSide5WithCoprocessor.java |    47 +
 .../client/TestFromClientSideCheckAndMutate.java   |    41 +
 ...romClientSideCheckAndMutateWithCoprocessor.java |    43 +
 ...tFromClientSideFilterAcrossMultipleRegions.java |    42 +
 ...FilterAcrossMultipleRegionsWithCoprocessor.java |    43 +
 ...bleExistsMethodMultipleRegionsMultipleGets.java |    42 +
 ...MultipleRegionsMultipleGetsWithCoprocessor.java |    43 +
 ...HTableExistsMethodMultipleRegionsSingleGet.java |    42 +
 ...hodMultipleRegionsSingleGetWithCoprocessor.java |    43 +
 .../client/TestFromClientSideMultiRowMutation.java |    41 +
 ...mClientSideMultiRowMutationWithCoprocessor.java |    43 +
 .../hbase/client/TestFromClientSideNoCodec.java    |    47 +-
 ...romClientSidePutThenGetWithMultipleThreads.java |    42 +
 ...tThenGetWithMultipleThreadsWithCoprocessor.java |    43 +
 .../client/TestFromClientSideReverseScan.java      |    41 +
 ...stFromClientSideReverseScanWithCoprocessor.java |    42 +
 .../client/TestFromClientSideScanExcpetion.java    |   224 +-
 ...FromClientSideScanExcpetionWithCoprocessor.java |    19 +-
 .../client/TestFromClientSideWithCoprocessor.java  |    63 -
 .../client/TestFromClientSideWithCoprocessor4.java |    61 -
 .../client/TestFromClientSideWithCoprocessor5.java |    60 -
 .../hbase/client/TestGetProcedureResult.java       |    23 +-
 .../TestGetScanColumnsWithNewVersionBehavior.java  |    23 +-
 .../hbase/client/TestGetScanPartialResult.java     |    25 +-
 .../org/apache/hadoop/hbase/client/TestHbck.java   |    86 +-
 .../hbase/client/TestIllegalTableDescriptor.java   |    88 +-
 .../TestIncreaseMetaReplicaThroughConfig.java      |    19 +-
 ...TestIncrementFromClientSideWithCoprocessor.java |    16 +-
 .../hbase/client/TestIncrementsFromClientSide.java |   107 +-
 .../hbase/client/TestIntraRowPagination.java       |    13 +-
 .../TestInvalidMutationDurabilityException.java    |    50 +-
 .../hbase/client/TestLimitedScanWithFilter.java    |    29 +-
 .../hbase/client/TestMalformedCellFromClient.java  |    42 +-
 .../hadoop/hbase/client/TestMasterRegistry.java    |    26 +-
 .../apache/hadoop/hbase/client/TestMetaCache.java  |    41 +-
 .../hbase/client/TestMetaRegionLocationCache.java  |    27 +-
 .../client/TestMetaReplicasAddressChange.java      |    21 +-
 .../client/TestMetaTableAccessorNoCluster.java     |    27 +-
 .../hbase/client/TestMetaWithReplicasBasic.java    |    23 +-
 .../TestMetaWithReplicasShutdownHandling.java      |    21 +-
 ...loneSnapshotFromClientAfterSplittingRegion.java |    22 +-
 ...oneSnapshotFromClientCloneLinksAfterDelete.java |    30 +-
 .../TestMobCloneSnapshotFromClientError.java       |    21 +-
 .../TestMobCloneSnapshotFromClientNormal.java      |    21 +-
 ...oreSnapshotFromClientAfterSplittingRegions.java |    23 +-
 ...tMobRestoreSnapshotFromClientAfterTruncate.java |    23 +-
 .../TestMobRestoreSnapshotFromClientClone.java     |    23 +-
 ...estoreSnapshotFromClientGetCompactionState.java |    23 +-
 ...stMobRestoreSnapshotFromClientSchemaChange.java |    23 +-
 .../TestMobRestoreSnapshotFromClientSimple.java    |    23 +-
 .../client/TestMobSnapshotCloneIndependence.java   |    24 +-
 .../hbase/client/TestMobSnapshotFromClient.java    |    24 +-
 .../client/TestMultiActionMetricsFromClient.java   |    23 +-
 .../hadoop/hbase/client/TestMultiParallel.java     |    61 +-
 .../hbase/client/TestMultiRespectsLimits.java      |    39 +-
 .../hbase/client/TestMultipleTimestamps.java       |   450 +-
 .../hbase/client/TestMutationGetCellBuilder.java   |    43 +-
 .../hbase/client/TestMvccConsistentScanner.java    |    42 +-
 .../hbase/client/TestPreadReversedScanner.java     |    43 +-
 .../client/TestPutDeleteEtcCellIteration.java      |    38 +-
 .../hadoop/hbase/client/TestPutWithDelete.java     |    76 +-
 .../hbase/client/TestRawAsyncScanCursor.java       |    31 +-
 .../TestRawAsyncTableLimitedScanWithFilter.java    |    27 +-
 .../hbase/client/TestRawAsyncTablePartialScan.java |    23 +-
 .../hadoop/hbase/client/TestRawAsyncTableScan.java |    56 +-
 .../hbase/client/TestRegionLocationCaching.java    |    35 +-
 .../hadoop/hbase/client/TestRegionLocator.java     |    19 +-
 .../hbase/client/TestReplicaWithCluster.java       |    58 +-
 .../hadoop/hbase/client/TestReplicasClient.java    |   121 +-
 .../hadoop/hbase/client/TestRequestAttributes.java |    21 +-
 .../hbase/client/TestRequestTooBigException.java   |    23 +-
 ...oreSnapshotFromClientAfterSplittingRegions.java |    36 +-
 ...TestRestoreSnapshotFromClientAfterTruncate.java |    36 +-
 .../client/TestRestoreSnapshotFromClientClone.java |    36 +-
 ...estoreSnapshotFromClientGetCompactionState.java |    36 +-
 .../TestRestoreSnapshotFromClientSchemaChange.java |    36 +-
 .../TestRestoreSnapshotFromClientSimple.java       |    36 +-
 .../org/apache/hadoop/hbase/client/TestResult.java |    46 +-
 .../hbase/client/TestResultFromCoprocessor.java    |    23 +-
 .../hbase/client/TestResultScannerCursor.java      |    21 +-
 .../hbase/client/TestResultSizeEstimation.java     |    41 +-
 .../hbase/client/TestRpcConnectionRegistry.java    |    33 +-
 .../hadoop/hbase/client/TestScanAttributes.java    |    28 +-
 .../hbase/client/TestScanWithoutFetchingData.java  |    25 +-
 .../hadoop/hbase/client/TestScannerTimeout.java    |    27 +-
 .../hbase/client/TestScannersFromClientSide.java   |  1018 +-
 .../hbase/client/TestScannersFromClientSide2.java  |    78 +-
 ...ReadWriteWithDifferentConnectionRegistries.java |    84 +
 .../hbase/client/TestSeparateClientZKCluster.java  |    37 +-
 .../hbase/client/TestServerBusyException.java      |    35 +-
 .../hbase/client/TestServerLoadDurability.java     |    59 +-
 .../client/TestShutdownOfMetaReplicaHolder.java    |    17 +-
 .../hadoop/hbase/client/TestSizeFailures.java      |    22 +-
 .../client/TestSnapshotCloneIndependence.java      |   366 +-
 .../client/TestSnapshotDFSTemporaryDirectory.java  |    22 +-
 .../hbase/client/TestSnapshotFromClient.java       |   455 +-
 .../TestSnapshotFromClientWithRegionReplicas.java  |    29 +-
 .../hadoop/hbase/client/TestSnapshotMetadata.java  |    37 +-
 .../client/TestSnapshotTemporaryDirectory.java     |   447 +-
 ...apshotTemporaryDirectoryWithRegionReplicas.java |    28 +-
 .../hadoop/hbase/client/TestSnapshotWithAcl.java   |    13 +-
 .../client/TestSnapshotWithAclAsyncAdmin.java      |    13 +-
 .../client/TestSnapshotWithTTLFromClient.java      |    37 +-
 .../hbase/client/TestSplitOrMergeAtTableLevel.java |    53 +-
 .../hbase/client/TestSplitOrMergeStatus.java       |    60 +-
 .../hadoop/hbase/client/TestTableFavoredNodes.java |   120 +-
 .../hbase/client/TestTableOperationException.java  |    74 +-
 .../hadoop/hbase/client/TestTableScanMetrics.java  |   251 +-
 .../hbase/client/TestTableSnapshotScanner.java     |    90 +-
 .../client/TestTableSnapshotScannerWithSFT.java    |    11 +-
 .../hadoop/hbase/client/TestTimestampsFilter.java  |   148 +-
 .../hbase/client/TestUpdateConfiguration.java      |    38 +-
 .../hbase/client/TestZKConnectionRegistry.java     |    47 +-
 .../hbase/client/locking/TestEntityLocks.java      |    23 +-
 .../client/replication/TestBadReplicationPeer.java |    25 +-
 .../TestReplicationAdminForSyncReplication.java    |    25 +-
 .../hadoop/hbase/codec/CodecPerformance.java       |     4 +-
 .../hadoop/hbase/codec/TestCellMessageCodec.java   |    19 +-
 .../hadoop/hbase/constraint/TestConstraint.java    |    31 +-
 .../hadoop/hbase/constraint/TestConstraints.java   |    54 +-
 .../hbase/coprocessor/SimpleRegionObserver.java    |     8 +-
 .../hbase/coprocessor/TestAppendTimeRange.java     |    43 +-
 .../coprocessor/TestClientMetaCoprocessor.java     |   198 +
 .../coprocessor/TestCoprocessorConfiguration.java  |    55 +-
 .../hbase/coprocessor/TestCoprocessorHost.java     |    31 +-
 .../coprocessor/TestCoprocessorInterface.java      |    53 +-
 .../hbase/coprocessor/TestCoprocessorMetrics.java  |    64 +-
 .../TestCoprocessorSharedConnection.java           |    28 +-
 .../hbase/coprocessor/TestCoprocessorStop.java     |    27 +-
 .../coprocessor/TestCoreMasterCoprocessor.java     |    31 +-
 .../coprocessor/TestCoreRegionCoprocessor.java     |    40 +-
 .../TestCoreRegionServerCoprocessor.java           |    38 +-
 .../TestIncrementAndAppendWithNullResult.java      |    31 +-
 .../hbase/coprocessor/TestIncrementTimeRange.java  |    35 +-
 .../TestMasterCoprocessorExceptionWithAbort.java   |    43 +-
 .../TestMasterCoprocessorExceptionWithRemove.java  |    33 +-
 .../hbase/coprocessor/TestMasterObserver.java      |   197 +-
 .../TestMasterObserverToModifyTableSchema.java     |    28 +-
 .../hbase/coprocessor/TestMetaTableMetrics.java    |    27 +-
 ...estNegativeMemStoreSizeWithSlowCoprocessor.java |    28 +-
 .../coprocessor/TestOpenTableInCoprocessor.java    |    33 +-
 .../TestPostIncrementAndAppendBeforeWAL.java       |    51 +-
 .../coprocessor/TestReadOnlyConfiguration.java     |    18 +-
 .../coprocessor/TestRegionCoprocessorHost.java     |    49 +-
 .../TestRegionCoprocessorQuotaUsage.java           |    25 +-
 .../coprocessor/TestRegionObserverBypass.java      |    31 +-
 ...ObserverForAddingMutationsFromCoprocessors.java |    39 +-
 .../coprocessor/TestRegionObserverInterface.java   |   106 +-
 .../TestRegionObserverPreFlushAndPreCompact.java   |    28 +-
 .../TestRegionObserverScannerOpenHook.java         |    57 +-
 .../coprocessor/TestRegionObserverStacking.java    |    15 +-
 ...tRegionServerCoprocessorExceptionWithAbort.java |    19 +-
 ...RegionServerCoprocessorExceptionWithRemove.java |    29 +-
 .../hbase/coprocessor/TestRpcCoprocessor.java      |    23 +-
 .../hadoop/hbase/coprocessor/TestWALObserver.java  |    62 +-
 .../TestForeignExceptionDispatcher.java            |    21 +-
 .../TestForeignExceptionSerialization.java         |    32 +-
 .../TestTimeoutExceptionInjector.java              |    15 +-
 .../hadoop/hbase/executor/TestExecutorService.java |    20 +-
 .../hadoop/hbase/filter/FilterTestingCluster.java  |    34 +-
 .../hbase/filter/TestBigDecimalComparator.java     |    49 +-
 .../hadoop/hbase/filter/TestBitComparator.java     |    15 +-
 .../hbase/filter/TestColumnPaginationFilter.java   |    21 +-
 .../hbase/filter/TestColumnPrefixFilter.java       |    33 +-
 .../hadoop/hbase/filter/TestColumnRangeFilter.java |   208 +-
 .../hbase/filter/TestComparatorSerialization.java  |    59 +-
 .../hbase/filter/TestDependentColumnFilter.java    |    61 +-
 .../org/apache/hadoop/hbase/filter/TestFilter.java |   138 +-
 .../hbase/filter/TestFilterFromRegionSide.java     |    26 +-
 .../hbase/filter/TestFilterHintForRejectedRow.java |  1373 +
 .../apache/hadoop/hbase/filter/TestFilterList.java |    64 +-
 .../hbase/filter/TestFilterListHintDelegation.java |   709 +
 .../hadoop/hbase/filter/TestFilterListOnMini.java  |    44 +-
 .../filter/TestFilterListOrOperatorWithBlkCnt.java |    37 +-
 .../hbase/filter/TestFilterSerialization.java      |    93 +-
 .../hbase/filter/TestFilterWithScanLimits.java     |    32 +-
 .../hadoop/hbase/filter/TestFilterWrapper.java     |    57 +-
 .../TestFiltersWithBinaryComponentComparator.java  |    41 +-
 .../filter/TestFuzzyRowAndColumnRangeFilter.java   |    55 +-
 .../hadoop/hbase/filter/TestFuzzyRowFilter.java    |    99 +-
 .../hbase/filter/TestFuzzyRowFilterEndToEnd.java   |    68 +-
 .../filter/TestFuzzyRowFilterEndToEndLarge.java    |    23 +-
 .../hbase/filter/TestInclusiveStopFilter.java      |    37 +-
 .../hbase/filter/TestInvocationRecordFilter.java   |    29 +-
 .../hbase/filter/TestMultiRowRangeFilter.java      |   111 +-
 .../filter/TestMultipleColumnPrefixFilter.java     |    40 +-
 .../hadoop/hbase/filter/TestNullComparator.java    |    28 +-
 .../apache/hadoop/hbase/filter/TestPageFilter.java |    19 +-
 .../hadoop/hbase/filter/TestParseFilter.java       |    27 +-
 .../hadoop/hbase/filter/TestPrefixFilter.java      |    33 +-
 .../TestQualifierFilterWithEmptyQualifier.java     |    39 +-
 .../hadoop/hbase/filter/TestRandomRowFilter.java   |    25 +-
 .../hadoop/hbase/filter/TestRegexComparator.java   |    22 +-
 .../hadoop/hbase/filter/TestScanRowPrefix.java     |    35 +-
 .../apache/hadoop/hbase/filter/TestSeekHints.java  |    30 +-
 .../filter/TestSingleColumnValueExcludeFilter.java |    33 +-
 .../hbase/filter/TestSingleColumnValueFilter.java  |   114 +-
 .../apache/hadoop/hbase/fs/TestBlockReorder.java   |    71 +-
 .../hbase/fs/TestBlockReorderBlockLocation.java    |    58 +-
 .../hbase/fs/TestBlockReorderMultiBlocks.java      |    51 +-
 .../hadoop/hbase/http/TestDebugDumpRedaction.java  |   219 +
 .../hadoop/hbase/http/TestInfoServersACL.java      |    65 +-
 .../hbase/io/TestByteBufferOutputStream.java       |    16 +-
 .../hbase/io/TestFSDataInputStreamWrapper.java     |    16 +-
 .../org/apache/hadoop/hbase/io/TestFileLink.java   |    28 +-
 .../org/apache/hadoop/hbase/io/TestHFileLink.java  |    76 +-
 .../hadoop/hbase/io/TestHalfStoreFileReader.java   |    39 +-
 .../org/apache/hadoop/hbase/io/TestHeapSize.java   |    21 +-
 .../hbase/io/TestImmutableBytesWritable.java       |    42 +-
 .../org/apache/hadoop/hbase/io/TestMetricsIO.java  |    14 +-
 .../hadoop/hbase/io/compress/HFileTestBase.java    |    16 +-
 .../io/encoding/TestBufferedDataBlockEncoder.java  |    19 +-
 .../hbase/io/encoding/TestChangingEncoding.java    |    23 +-
 .../hbase/io/encoding/TestDataBlockEncoders.java   |    58 +-
 .../hbase/io/encoding/TestDataBlockEncoding.java   |    18 +-
 .../io/encoding/TestSeekBeforeWithReverseScan.java |    23 +-
 .../io/encoding/TestSeekToBlockWithEncoders.java   |    48 +-
 .../hadoop/hbase/io/hfile/CacheTestUtils.java      |    44 +-
 .../apache/hadoop/hbase/io/hfile/KeySampler.java   |     6 +-
 .../hbase/io/hfile/TestBlockCacheReporting.java    |    21 +-
 .../hfile/TestBlockEvictionOnRegionMovement.java   |    27 +-
 .../hadoop/hbase/io/hfile/TestBlockIOUtils.java    |   207 +-
 .../hadoop/hbase/io/hfile/TestBytesReadFromFs.java |    67 +-
 .../hadoop/hbase/io/hfile/TestCacheConfig.java     |    25 +-
 .../hadoop/hbase/io/hfile/TestCacheOnWrite.java    |    85 +-
 .../hadoop/hbase/io/hfile/TestCacheStats.java      |    16 +-
 .../hbase/io/hfile/TestCachedBlockQueue.java       |    15 +-
 .../apache/hadoop/hbase/io/hfile/TestChecksum.java |    25 +-
 .../hbase/io/hfile/TestCombinedBlockCache.java     |    20 +-
 .../hbase/io/hfile/TestFixedFileTrailer.java       |    56 +-
 .../io/hfile/TestForceCacheImportantBlocks.java    |    39 +-
 .../apache/hadoop/hbase/io/hfile/TestHFile.java    |   220 +-
 .../hadoop/hbase/io/hfile/TestHFileBlock.java      |   113 +-
 .../io/hfile/TestHFileBlockHeaderCorruption.java   |   222 +-
 .../hadoop/hbase/io/hfile/TestHFileBlockIndex.java |   153 +-
 .../hbase/io/hfile/TestHFileBlockUnpack.java       |    66 +-
 .../hbase/io/hfile/TestHFileDataBlockEncoder.java  |    54 +-
 .../hadoop/hbase/io/hfile/TestHFileEncryption.java |    39 +-
 .../TestHFileInlineToRootChunkConversion.java      |    13 +-
 .../hbase/io/hfile/TestHFilePrettyPrinter.java     |    46 +-
 .../hadoop/hbase/io/hfile/TestHFileReaderImpl.java |    29 +-
 .../hfile/TestHFileScannerImplReferenceCount.java  |   249 +-
 .../hadoop/hbase/io/hfile/TestHFileSeek.java       |    33 +-
 .../hadoop/hbase/io/hfile/TestHFileWriterV3.java   |    42 +-
 .../hfile/TestHFileWriterV3WithDataEncoders.java   |    63 +-
 .../io/hfile/TestLazyDataBlockDecompression.java   |   101 +-
 .../hbase/io/hfile/TestLruAdaptiveBlockCache.java  |    41 +-
 .../hadoop/hbase/io/hfile/TestLruBlockCache.java   |    39 +-
 .../hadoop/hbase/io/hfile/TestLruCachedBlock.java  |    21 +-
 .../apache/hadoop/hbase/io/hfile/TestPrefetch.java |    49 +-
 .../hadoop/hbase/io/hfile/TestPrefetchRSClose.java |    25 +-
 .../apache/hadoop/hbase/io/hfile/TestReseekTo.java |    16 +-
 .../hbase/io/hfile/TestRowIndexV1DataEncoder.java  |    21 +-
 .../hbase/io/hfile/TestRowIndexV1RoundTrip.java    |    22 +-
 .../hbase/io/hfile/TestScannerFromBucketCache.java |    54 +-
 .../hfile/TestScannerSelectionUsingKeyRange.java   |    38 +-
 .../io/hfile/TestScannerSelectionUsingTTL.java     |    35 +-
 .../io/hfile/TestSeekBeforeWithInlineBlocks.java   |    32 +-
 .../apache/hadoop/hbase/io/hfile/TestSeekTo.java   |    51 +-
 .../hbase/io/hfile/TestTinyLfuBlockCache.java      |    25 +-
 .../hbase/io/hfile/bucket/TestBucketCache.java     |   217 +-
 .../bucket/TestBucketCacheEmptyPersistence.java    |   161 +
 .../io/hfile/bucket/TestBucketCachePersister.java  |    20 +-
 .../io/hfile/bucket/TestBucketCacheRefCnt.java     |    23 +-
 .../io/hfile/bucket/TestBucketWriterThread.java    |    25 +-
 .../io/hfile/bucket/TestByteBufferIOEngine.java    |    32 +-
 .../bucket/TestExclusiveMemoryMmapEngine.java      |    22 +-
 .../hbase/io/hfile/bucket/TestFileIOEngine.java    |    39 +-
 .../io/hfile/bucket/TestPrefetchPersistence.java   |    52 +-
 .../hfile/bucket/TestPrefetchWithBucketCache.java  |   195 +-
 .../hadoop/hbase/io/hfile/bucket/TestRAMCache.java |    29 +-
 .../bucket/TestRecoveryPersistentBucketCache.java  |    63 +-
 .../io/hfile/bucket/TestVerifyBucketCacheFile.java |   128 +-
 .../hadoop/hbase/io/util/TestMemorySizeUtil.java   |    55 +-
 .../apache/hadoop/hbase/ipc/AbstractTestIPC.java   |   164 +-
 .../hadoop/hbase/ipc/AbstractTestRpcServer.java    |    76 +
 .../apache/hadoop/hbase/ipc/TestBlockingIPC.java   |    29 +-
 .../apache/hadoop/hbase/ipc/TestBufferChain.java   |    27 +-
 .../apache/hadoop/hbase/ipc/TestCallRunner.java    |    56 +-
 .../hadoop/hbase/ipc/TestFifoRpcScheduler.java     |    19 +-
 .../apache/hadoop/hbase/ipc/TestHBaseClient.java   |    49 +-
 .../hbase/ipc/TestMasterFifoRpcScheduler.java      |    28 +-
 .../hbase/ipc/TestMultipleServerPrincipalsIPC.java |    70 +-
 .../hbase/ipc/TestNettyChannelWritability.java     |    21 +-
 .../org/apache/hadoop/hbase/ipc/TestNettyIPC.java  |    47 +-
 .../hbase/ipc/TestNettyIPCCloseConnection.java     |    25 +-
 .../hadoop/hbase/ipc/TestNettyRpcServer.java       |    77 +-
 .../apache/hadoop/hbase/ipc/TestNettyTlsIPC.java   |    84 +-
 .../apache/hadoop/hbase/ipc/TestProtoBufRpc.java   |    56 +-
 .../hadoop/hbase/ipc/TestRWQueueRpcExecutor.java   |    42 +-
 .../hadoop/hbase/ipc/TestRpcClientLeaks.java       |    43 +-
 .../hadoop/hbase/ipc/TestRpcConnectionHeader.java  |   129 +
 .../apache/hadoop/hbase/ipc/TestRpcExecutor.java   |   111 +
 .../hadoop/hbase/ipc/TestRpcHandlerException.java  |    39 +-
 .../apache/hadoop/hbase/ipc/TestRpcMetrics.java    |    15 +-
 .../ipc/TestRpcServerSlowConnectionSetup.java      |    48 +-
 .../hbase/ipc/TestRpcServerTraceLogging.java       |    22 +-
 .../hbase/ipc/TestRpcSkipInitialSaslHandshake.java |    29 +-
 .../hadoop/hbase/ipc/TestSecureNettyRpcServer.java |    40 +-
 .../hbase/ipc/TestSecureSimpleRpcServer.java       |    46 +-
 .../hbase/ipc/TestSecurityRpcSentBytesMetrics.java |    27 +-
 .../apache/hadoop/hbase/ipc/TestServerCall.java    |    35 +-
 .../hadoop/hbase/ipc/TestSimpleRpcScheduler.java   |    52 +-
 .../hadoop/hbase/ipc/TestSimpleRpcServer.java      |    82 +-
 .../hadoop/hbase/master/AbstractTestDLS.java       |    39 +-
 .../master/AbstractTestMasterRegionMutation.java   |   137 +
 .../hbase/master/AbstractTestRestartCluster.java   |     8 +-
 .../hbase/master/MasterStateStoreTestBase.java     |    11 +-
 .../hbase/master/MockNoopMasterServices.java       |    30 +-
 .../hadoop/hbase/master/MockRegionServer.java      |    45 +
 .../hbase/master/TestActiveMasterManager.java      |    35 +-
 .../hbase/master/TestAlwaysStandByHMaster.java     |    32 +-
 .../hbase/master/TestAssignmentManagerMetrics.java |    38 +-
 .../apache/hadoop/hbase/master/TestBalancer.java   |    37 +-
 .../hbase/master/TestClientMetaServiceRPCs.java    |    23 +-
 .../hbase/master/TestClockSkewDetection.java       |    15 +-
 .../hbase/master/TestCloseAnOpeningRegion.java     |    21 +-
 .../hadoop/hbase/master/TestClusterRestart.java    |    19 +-
 .../hbase/master/TestClusterRestartFailover.java   |    44 +-
 .../TestClusterRestartFailoverSplitWithoutZk.java  |    11 +-
 .../master/TestClusterRestartSplitWithoutZk.java   |    11 +-
 .../hbase/master/TestClusterStatusPublisher.java   |    43 +-
 .../hadoop/hbase/master/TestDLSAsyncFSWAL.java     |    11 +-
 .../apache/hadoop/hbase/master/TestDLSFSHLog.java  |    11 +-
 .../apache/hadoop/hbase/master/TestDeadServer.java |    62 +-
 .../hadoop/hbase/master/TestGetInfoPort.java       |    23 +-
 .../hbase/master/TestGetLastFlushedSequenceId.java |    30 +-
 .../hbase/master/TestGetReplicationLoad.java       |    35 +-
 .../hbase/master/TestHMasterCommandLine.java       |    15 +-
 .../hbase/master/TestHMasterRPCException.java      |    23 +-
 .../hadoop/hbase/master/TestListTablesByState.java |    35 +-
 .../hbase/master/TestLoadProcedureError.java       |    23 +-
 .../org/apache/hadoop/hbase/master/TestMaster.java |    45 +-
 .../master/TestMasterAbortAndRSGotKilled.java      |    28 +-
 .../hbase/master/TestMasterBalanceThrottling.java  |    41 +-
 .../hadoop/hbase/master/TestMasterBalancerNPE.java |    36 +-
 .../hbase/master/TestMasterChoreScheduled.java     |    29 +-
 .../master/TestMasterCoprocessorServices.java      |    20 +-
 .../hbase/master/TestMasterDryRunBalancer.java     |    24 +-
 .../hadoop/hbase/master/TestMasterFailover.java    |    39 +-
 .../TestMasterFailoverBalancerPersistence.java     |    17 +-
 .../hadoop/hbase/master/TestMasterFileSystem.java  |    38 +-
 .../TestMasterFileSystemWithStoreFileTracking.java |    28 +-
 .../master/TestMasterFileSystemWithWALDir.java     |    23 +-
 .../TestMasterHandlerFullWhenTransitRegion.java    |    17 +-
 .../hadoop/hbase/master/TestMasterMetrics.java     |    21 +-
 .../hbase/master/TestMasterMetricsWrapper.java     |    25 +-
 .../hadoop/hbase/master/TestMasterNoCluster.java   |    41 +-
 .../TestMasterOperationsForRegionReplicas.java     |    55 +-
 .../hadoop/hbase/master/TestMasterQosFunction.java |    17 +-
 .../hbase/master/TestMasterRegionMutation1.java    |   149 +-
 .../hbase/master/TestMasterRegionMutation2.java    |    47 +-
 .../hadoop/hbase/master/TestMasterRepairMode.java  |    56 +-
 .../TestMasterRestartAfterDisablingTable.java      |    51 +-
 .../hadoop/hbase/master/TestMasterShutdown.java    |    28 +-
 .../hadoop/hbase/master/TestMasterTransitions.java |    38 +-
 .../hadoop/hbase/master/TestMasterUseIp.java       |    22 +-
 .../master/TestMergeTableRegionsWhileRSCrash.java  |    26 +-
 .../master/TestMetaAssignmentWithStopMaster.java   |    28 +-
 .../hbase/master/TestMetaShutdownHandler.java      |    44 +-
 .../master/TestMigrateAndMirrorMetaLocations.java  |    25 +-
 .../hbase/master/TestMigrateNamespaceTable.java    |    27 +-
 .../master/TestNewStartedRegionServerVersion.java  |    23 +-
 .../hbase/master/TestOldWALsDirSizeChore.java      |    30 +-
 .../hadoop/hbase/master/TestRecreateCluster.java   |    34 +-
 .../hadoop/hbase/master/TestRegionPlacement.java   |    70 +-
 .../hadoop/hbase/master/TestRegionPlacement2.java  |    40 +-
 .../hbase/master/TestRegionPlansWithThrottle.java  |    26 +-
 .../hadoop/hbase/master/TestRegionState.java       |    24 +-
 .../hbase/master/TestRegionsRecoveryChore.java     |    32 +-
 .../master/TestRegionsRecoveryConfigManager.java   |    25 +-
 .../master/TestRestartWithEmptyWALDirectory.java   |    23 +-
 .../master/TestRetainAssignmentOnRestart.java      |    25 +-
 ...estRetainAssignmentOnRestartSplitWithoutZk.java |    11 +-
 .../hadoop/hbase/master/TestRollingRestart.java    |    52 +-
 .../master/TestRoundRobinAssignmentOnRestart.java  |    23 +-
 ...oundRobinAssignmentOnRestartSplitWithoutZk.java |    11 +-
 .../TestServerCrashProcedureCarryingMetaStuck.java |    21 +-
 .../master/TestServerCrashProcedureStuck.java      |    21 +-
 .../hbase/master/TestShutdownBackupMaster.java     |    23 +-
 .../master/TestShutdownWithNoRegionServer.java     |    21 +-
 .../hadoop/hbase/master/TestSplitLogManager.java   |    35 +-
 .../hbase/master/TestSplitOrMergeStateStore.java   |    23 +-
 .../hbase/master/TestSplitRegionWhileRSCrash.java  |    26 +-
 .../hadoop/hbase/master/TestSplitWALManager.java   |    35 +-
 .../hadoop/hbase/master/TestUnknownServers.java    |    26 +-
 .../apache/hadoop/hbase/master/TestWALFencing.java |    81 +
 .../hadoop/hbase/master/TestWarmupRegion.java      |    31 +-
 .../master/assignment/AssignmentTestingUtil.java   |     8 +-
 .../master/assignment/MockMasterServices.java      |     1 +
 .../assignment/TestAMAssignWithRandExec.java       |    13 +-
 .../master/assignment/TestAMServerFailedOpen.java  |    19 +-
 ...estAssignRegionToUninitializedRegionServer.java |    27 +-
 .../master/assignment/TestAssignmentManager.java   |    43 +-
 .../assignment/TestAssignmentManagerBase.java      |    28 +-
 .../TestAssignmentManagerLoadMetaRegionState.java  |    25 +-
 .../assignment/TestAssignmentManagerUtil.java      |    30 +-
 .../master/assignment/TestAssignmentOnRSCrash.java |    31 +-
 .../assignment/TestCloseRegionWhileRSCrash.java    |    23 +-
 .../TestDeadServerMetricRegionChore.java           |    23 +-
 .../assignment/TestExceptionInAssignRegion.java    |    41 +-
 .../TestExceptionInUnassignedRegion.java           |    41 +-
 .../hbase/master/assignment/TestHbckChore.java     |    29 +-
 .../TestMasterAbortWhileMergingTable.java          |    32 +-
 .../assignment/TestMergeTableRegionsProcedure.java |    52 +-
 .../assignment/TestModifyTableWhileMerging.java    |    28 +-
 .../assignment/TestOpenRegionProcedureBackoff.java |    21 +-
 .../assignment/TestOpenRegionProcedureHang.java    |    21 +-
 .../assignment/TestRaceBetweenSCPAndTRSP.java      |    21 +-
 ...TestReduceExcessRegionReplicasBlockedByRIT.java |    27 +-
 .../TestRegionAssignedToMultipleRegionServers.java |    25 +-
 .../hbase/master/assignment/TestRegionBypass.java  |    42 +-
 .../assignment/TestRegionMoveAndAbandon.java       |    33 +-
 .../master/assignment/TestRegionReplicaSplit.java  |    40 +-
 .../hbase/master/assignment/TestRegionSplit.java   |    65 +-
 .../TestRegionSplitAndSeparateChildren.java        |    55 +-
 .../master/assignment/TestRegionStateNodeLock.java |    25 +-
 .../master/assignment/TestRegionStateStore.java    |    47 +-
 .../hbase/master/assignment/TestRegionStates.java  |    31 +-
 .../assignment/TestReportOnlineRegionsRace.java    |    23 +-
 ...tReportRegionStateTransitionFromDeadServer.java |    28 +-
 .../TestReportRegionStateTransitionRetry.java      |    21 +-
 .../master/assignment/TestRogueRSAssignment.java   |    61 +-
 .../hbase/master/assignment/TestRollbackSCP.java   |    27 +-
 .../master/assignment/TestSCPGetRegionsRace.java   |    25 +-
 .../assignment/TestSplitTableRegionProcedure.java  |   113 +-
 .../TestTRSPPersistUninitializedSubProc.java       |    21 +-
 .../TestTransitRegionStateProcedure.java           |    55 +-
 .../assignment/TestWakeUpUnexpectedProcedure.java  |    23 +-
 .../balancer/BalancerConditionalsTestUtil.java     |    31 +-
 .../balancer/RSGroupableBalancerTestBase.java      |    88 +-
 .../master/balancer/TestBalancerDecision.java      |    19 +-
 .../master/balancer/TestBalancerRejection.java     |    27 +-
 .../TestBalancerStatusTagInJMXMetrics.java         |    28 +-
 .../balancer/TestCacheAwareLoadBalancer.java       |   444 +-
 .../TestCacheAwareLoadBalancerCostFunctions.java   |   150 +-
 .../balancer/TestFavoredNodeTableImport.java       |    28 +-
 .../TestFavoredStochasticBalancerPickers.java      |    44 +-
 .../TestFavoredStochasticLoadBalancer.java         |   148 +-
 .../balancer/TestLoadBalancerStateStore.java       |    23 +-
 .../TestMetaTableIsolationBalancerConditional.java |    36 +-
 .../balancer/TestRSGroupBasedLoadBalancer.java     |    25 +-
 ...lancerWithCacheAwareLoadBalancerAsInternal.java |   735 +
 ...lancerWithStochasticLoadBalancerAsInternal.java |    22 +-
 ...TestReplicaDistributionBalancerConditional.java |    21 +-
 .../balancer/TestStochasticBalancerJmxMetrics.java |    45 +-
 ...BalancerHeterogeneousCostRulesLoadFromHDFS.java |    23 +-
 .../hbase/master/cleaner/TestCleanerChore.java     |    99 +-
 .../master/cleaner/TestCleanerClearHFiles.java     |    27 +-
 .../hbase/master/cleaner/TestHFileCleaner.java     |    96 +-
 .../hbase/master/cleaner/TestHFileLinkCleaner.java |    83 +-
 .../hbase/master/cleaner/TestLogsCleaner.java      |    37 +-
 .../cleaner/TestReplicationBarrierCleaner.java     |    56 +-
 .../cleaner/TestReplicationHFileCleaner.java       |    57 +-
 .../master/cleaner/TestSnapshotCleanerChore.java   |    13 +-
 .../master/cleaner/TestSnapshotFromMaster.java     |    71 +-
 .../http/TestApiV1ClusterMetricsResource.java      |    62 +-
 .../hbase/master/http/TestHbckMetricsResource.java |    60 +-
 .../hbase/master/http/TestMasterStatusPage.java    |    67 +-
 .../hbase/master/http/TestMasterStatusUtil.java    |    28 +-
 .../hadoop/hbase/master/http/TestMetaBrowser.java  |    94 +-
 .../master/http/TestMetaBrowserNoCluster.java      |    26 +-
 .../hbase/master/http/TestRegionVisualizer.java    |    21 +-
 .../hbase/master/http/gson/GsonFactoryTest.java    |    19 +-
 .../hbase/master/janitor/TestCatalogJanitor.java   |    60 +-
 .../master/janitor/TestCatalogJanitorCluster.java  |    38 +-
 .../janitor/TestCatalogJanitorInMemoryStates.java  |    57 +-
 .../hadoop/hbase/master/janitor/TestMetaFixer.java |    70 +-
 .../master/janitor/TestMetaFixerNoCluster.java     |    18 +-
 .../hbase/master/locking/TestLockManager.java      |    35 +-
 .../hbase/master/locking/TestLockProcedure.java    |    66 +-
 .../migrate/TestInitializeStoreFileTracker.java    |    27 +-
 ...gionNormalizerManagerConfigurationObserver.java |    23 +-
 .../normalizer/TestRegionNormalizerStateStore.java |    23 +-
 .../normalizer/TestRegionNormalizerWorkQueue.java  |    24 +-
 .../normalizer/TestRegionNormalizerWorker.java     |    63 +-
 .../normalizer/TestSimpleRegionNormalizer.java     |    91 +-
 .../TestSimpleRegionNormalizerOnCluster.java       |   111 +-
 .../MasterFailoverWithProceduresTestBase.java      |     8 +-
 .../procedure/MasterProcedureTestingUtility.java   |    25 +-
 .../procedure/TestCloneSnapshotProcedure.java      |    33 +-
 .../TestCloneSnapshotProcedureFileBasedSFT.java    |    18 +-
 .../TestCreateDeleteTableProcedureWithRetry.java   |    28 +-
 .../procedure/TestCreateNamespaceProcedure.java    |    35 +-
 .../procedure/TestCreateTableNoRegionServer.java   |    29 +-
 .../master/procedure/TestCreateTableProcedure.java |    75 +-
 .../TestCreateTableProcedureMuitipleRegions.java   |    21 +-
 .../TestCreateTableWithMasterFailover.java         |    13 +-
 .../TestDeleteColumnFamilyProcedureFromClient.java |    41 +-
 .../procedure/TestDeleteNamespaceProcedure.java    |    48 +-
 .../master/procedure/TestDeleteTableProcedure.java |    90 +-
 .../TestDeleteTableProcedureWithRecovery.java      |    53 +-
 .../TestDeleteTableWithMasterFailover.java         |    13 +-
 .../procedure/TestDisableTableProcedure.java       |    48 +-
 .../TestDisableTableWithMasterFailover.java        |    13 +-
 .../master/procedure/TestEnableTableProcedure.java |    51 +-
 .../TestEnableTableWithMasterFailover.java         |    13 +-
 .../TestFastFailOnProcedureNotRegistered.java      |    29 +-
 .../master/procedure/TestFlushTableProcedure.java  |    22 +-
 .../procedure/TestFlushTableProcedureBase.java     |    20 +-
 .../TestFlushTableProcedureMasterRestarts.java     |    15 +-
 ...eProcedureWithDoNotSupportFlushTableMaster.java |    15 +-
 .../hadoop/hbase/master/procedure/TestHBCKSCP.java |    56 +-
 .../master/procedure/TestIgnoreUnknownFamily.java  |    40 +-
 .../master/procedure/TestLogRollProcedure.java     |    34 +-
 .../TestManageTableErasureCodingPolicy.java        |    23 +-
 .../procedure/TestMasterObserverPostCalls.java     |    67 +-
 .../procedure/TestMasterProcedureEvents.java       |    42 +-
 .../procedure/TestMasterProcedureScheduler.java    |    81 +-
 .../TestMasterProcedureSchedulerConcurrency.java   |    51 +-
 .../procedure/TestModifyNamespaceProcedure.java    |    35 +-
 .../master/procedure/TestModifyTableProcedure.java |   191 +-
 .../TestModifyTableProcedureWithRecovery.java      |    63 +-
 .../hbase/master/procedure/TestProcedureAdmin.java |    56 +-
 .../master/procedure/TestProcedurePriority.java    |    21 +-
 .../master/procedure/TestProcedureTracing.java     |    82 +-
 .../master/procedure/TestProcedureWaitAndWake.java |    21 +-
 .../master/procedure/TestRaceBetweenSCPAndDTP.java |    21 +-
 .../procedure/TestRecoverySnapshotUtils.java       |    27 +-
 .../procedure/TestReloadQuotasProcedure.java       |    39 +-
 .../TestReopenTableRegionsIntegration.java         |   330 +
 .../TestReopenTableRegionsProcedureBackoff.java    |    23 +-
 ...estReopenTableRegionsProcedureBatchBackoff.java |    25 +-
 .../TestReopenTableRegionsProcedureBatching.java   |    25 +-
 ...estReopenTableRegionsProcedureInfiniteLoop.java |    21 +-
 ...ReopenTableRegionsProcedureSpecificRegions.java |   437 +
 .../procedure/TestRestoreSnapshotProcedure.java    |    53 +-
 .../hadoop/hbase/master/procedure/TestSCP.java     |    18 +-
 .../hadoop/hbase/master/procedure/TestSCPBase.java |    14 +-
 .../hbase/master/procedure/TestSCPWithMeta.java    |    13 +-
 .../procedure/TestSCPWithMetaWithReplicas.java     |    11 +-
 ...CPWithMetaWithReplicasWithoutZKCoordinated.java |    11 +-
 .../TestSCPWithMetaWithoutZKCoordinated.java       |    11 +-
 .../master/procedure/TestSCPWithReplicas.java      |    11 +-
 .../procedure/TestSCPWithReplicasWithRSGroup.java  |    12 +-
 .../TestSCPWithReplicasWithoutZKCoordinated.java   |    11 +-
 .../hbase/master/procedure/TestSCPWithoutMeta.java |    13 +-
 .../procedure/TestSCPWithoutMetaWithReplicas.java  |    11 +-
 ...ithoutMetaWithReplicasWithoutZKCoordinated.java |    11 +-
 .../TestSCPWithoutMetaWithoutZKCoordinated.java    |    11 +-
 .../procedure/TestSCPWithoutZKCoordinated.java     |    11 +-
 .../procedure/TestSafemodeBringsDownMaster.java    |    32 +-
 .../procedure/TestSchedulerQueueDeadLock.java      |    46 +-
 .../procedure/TestServerRemoteProcedure.java       |    43 +-
 .../master/procedure/TestSnapshotProcedure.java    |    21 +-
 .../TestSnapshotProcedureBasicSnapshot.java        |    28 +-
 .../TestSnapshotProcedureConcurrently.java         |    21 +-
 .../TestSnapshotProcedureEarlyExpiration.java      |    22 +-
 .../TestSnapshotProcedureForSnapshotType.java      |    38 +-
 .../TestSnapshotProcedureMasterRestarts.java       |    19 +-
 .../master/procedure/TestSnapshotProcedureRIT.java |    13 +-
 .../procedure/TestSnapshotProcedureRSCrashes.java  |    15 +-
 .../TestSnapshotProcedureSnapshotCorrupted.java    |    17 +-
 .../TestSnapshotProcedureWithLockTimeout.java      |    27 +-
 .../procedure/TestSnapshotRegionProcedure.java     |    27 +-
 .../procedure/TestSnapshotVerifyProcedure.java     |    49 +-
 .../master/procedure/TestSplitWALProcedure.java    |    39 +-
 ...tSuspendTRSPWhenHoldingRegionStateNodeLock.java |    25 +-
 .../procedure/TestTableDDLProcedureBase.java       |    22 +-
 .../TestTableDescriptorModificationFromClient.java |    50 +-
 .../TestTableProcedureWaitingQueueCleanup.java     |    23 +-
 .../procedure/TestTruncateRegionProcedure.java     |    58 +-
 .../TestTruncateRegionProcedureWithRecovery.java   |    68 +-
 .../procedure/TestTruncateTableProcedure.java      |    62 +-
 .../TestTruncateTableProcedureWithRecovery.java    |    53 +-
 .../TestTruncateTableWithMasterFailover.java       |    15 +-
 .../procedure/TestWALProcedureStoreOnHDFS.java     |    50 +-
 .../hbase/master/region/MasterRegionTestBase.java  |    14 +-
 .../region/TestChangeSFTForMasterRegion.java       |    23 +-
 .../master/region/TestMasterRegionCompaction.java  |    17 +-
 .../hbase/master/region/TestMasterRegionFlush.java |    35 +-
 .../master/region/TestMasterRegionInitialize.java  |    23 +-
 .../region/TestMasterRegionOnTwoFileSystems.java   |    41 +-
 .../master/region/TestMasterRegionRpcTimeout.java  |    15 +-
 .../master/region/TestMasterRegionWALCleaner.java  |    19 +-
 .../master/region/TestMasterRegionWALRecovery.java |    19 +-
 .../TestMasterRegionWALSyncTimeoutIOException.java |    15 +-
 .../replication/TestDisablePeerModification.java   |    55 +-
 .../replication/TestMigrateReplicationQueue.java   |    19 +-
 ...rateReplicationQueueFromZkToTableProcedure.java |    31 +-
 ...icationQueueFromZkToTableProcedureRecovery.java |    31 +-
 .../TestModifyPeerProcedureRetryBackoff.java       |    21 +-
 .../TestRegisterPeerWorkerWhenRestarting.java      |    23 +-
 ...tReplicationPeerManagerMigrateQueuesFromZk.java |    45 +-
 .../TestSyncReplicationReplayWALManager.java       |    23 +-
 ...itPeerSyncReplicationStateProcedureBackoff.java |    21 +-
 ...nsitPeerSyncReplicationStateProcedureRetry.java |    19 +-
 .../snapshot/TestSnapshotCleanupStateStore.java    |    23 +-
 .../master/snapshot/TestSnapshotFileCache.java     |    41 +-
 ...stSnapshotFileCacheWithDifferentWorkingDir.java |    19 +-
 .../master/snapshot/TestSnapshotHFileCleaner.java  |    35 +-
 .../hbase/master/snapshot/TestSnapshotManager.java |    84 +-
 .../hbase/master/snapshot/TestSnapshotStats.java   |    46 +-
 .../master/snapshot/TestTakeSnapshotHandler.java   |    49 +-
 .../hadoop/hbase/mob/FaultyMobStoreCompactor.java  |     1 +
 .../org/apache/hadoop/hbase/mob/MobTestUtil.java   |    18 +-
 .../apache/hadoop/hbase/mob/TestCachedMobFile.java |    35 +-
 .../hbase/mob/TestDefaultMobStoreFlusher.java      |    65 +-
 .../hbase/mob/TestExpiredMobFileCleaner.java       |    40 +-
 .../hbase/mob/TestExpiredMobFileCleanerChore.java  |   249 +
 .../hadoop/hbase/mob/TestMobCompactionOptMode.java |    12 +-
 .../mob/TestMobCompactionOptRegionBatchMode.java   |    23 +-
 .../TestMobCompactionRegularRegionBatchMode.java   |    23 +-
 .../hbase/mob/TestMobCompactionWithDefaults.java   |   168 +-
 .../hbase/mob/TestMobCompactionWithException.java  |    48 +-
 .../hadoop/hbase/mob/TestMobDataBlockEncoding.java |    20 +-
 .../org/apache/hadoop/hbase/mob/TestMobFile.java   |    31 +-
 .../apache/hadoop/hbase/mob/TestMobFileCache.java  |    24 +-
 .../hadoop/hbase/mob/TestMobFileCleanerChore.java  |    52 +
 .../hadoop/hbase/mob/TestMobFileCleanupUtil.java   |    25 +-
 .../apache/hadoop/hbase/mob/TestMobFileLink.java   |    31 +-
 .../apache/hadoop/hbase/mob/TestMobFileName.java   |    24 +-
 .../hadoop/hbase/mob/TestMobStoreCompaction.java   |   148 +-
 .../hadoop/hbase/mob/TestMobStoreScanner.java      |    86 +-
 .../org/apache/hadoop/hbase/mob/TestMobUtils.java  |    21 +-
 .../hbase/mob/TestMobWithByteBuffAllocator.java    |    28 +-
 .../hbase/mob/TestRSMobFileCleanerChore.java       |    25 +-
 .../TestMemoryBoundedLogMessageBuffer.java         |    25 +-
 .../hadoop/hbase/monitoring/TestTaskMonitor.java   |    37 +-
 .../hbase/namequeues/TestNamedQueueRecorder.java   |   134 +-
 .../hadoop/hbase/namequeues/TestRpcLogDetails.java |    19 +-
 .../hbase/namequeues/TestSlowLogAccessor.java      |    46 +-
 .../hadoop/hbase/namequeues/TestTooLargeLog.java   |    42 +-
 .../hbase/namequeues/TestWALEventTracker.java      |    29 +-
 .../TestWALEventTrackerTableAccessor.java          |    13 +-
 .../TestWalEventTrackerQueueService.java           |    27 +-
 .../hbase/namespace/TestNamespaceAuditor.java      |   109 +-
 .../hbase/procedure/TestFailedProcCleanup.java     |    22 +-
 .../hadoop/hbase/procedure/TestProcedure.java      |    17 +-
 .../hbase/procedure/TestProcedureCoordinator.java  |    28 +-
 .../hbase/procedure/TestProcedureDescriber.java    |    15 +-
 .../hbase/procedure/TestProcedureManager.java      |    27 +-
 .../hbase/procedure/TestProcedureMember.java       |    17 +-
 .../hadoop/hbase/procedure/TestZKProcedure.java    |    39 +-
 .../procedure/TestZKProcedureControllers.java      |    41 +-
 .../RegionProcedureStorePerformanceEvaluation.java |    13 +-
 .../store/region/RegionProcedureStoreTestBase.java |    12 +-
 .../region/RegionProcedureStoreTestHelper.java     |     5 +-
 .../region/RegionProcedureStoreTestProcedure.java  |     2 +-
 .../region/TestHFileProcedurePrettyPrinter.java    |    19 +-
 .../store/region/TestRegionProcedureStore.java     |    19 +-
 .../region/TestRegionProcedureStoreMigration.java  |    31 +-
 .../region/TestWALProcedurePrettyPrinter.java      |    15 +-
 .../hbase/protobuf/TestReplicationProtobuf.java    |    17 +-
 .../hbase/quotas/SpaceQuotaHelperForTests.java     |    33 +-
 .../hbase/quotas/TestActivePolicyEnforcement.java  |    37 +-
 .../hadoop/hbase/quotas/TestAtomicReadQuota.java   |    20 +-
 .../hbase/quotas/TestBlockBytesScannedQuota.java   |    30 +-
 .../quotas/TestClusterScopeQuotaThrottle.java      |    31 +-
 .../hbase/quotas/TestDefaultAtomicQuota.java       |    20 +-
 .../hbase/quotas/TestDefaultHandlerUsageQuota.java |    36 +-
 .../hbase/quotas/TestDefaultOperationQuota.java    |    18 +-
 .../hadoop/hbase/quotas/TestDefaultQuota.java      |    20 +-
 .../quotas/TestFeedbackAdaptiveRateLimiter.java    |    92 +-
 .../hbase/quotas/TestFileArchiverNotifierImpl.java |    62 +-
 .../quotas/TestFileSystemUtilizationChore.java     |    20 +-
 .../hbase/quotas/TestGlobalQuotaSettingsImpl.java  |    16 +-
 .../hbase/quotas/TestLowLatencySpaceQuotas.java    |    68 +-
 .../hbase/quotas/TestMasterQuotaManager.java       |    16 +-
 .../hbase/quotas/TestMasterQuotasObserver.java     |    67 +-
 .../quotas/TestMasterQuotasObserverWithMocks.java  |    30 +-
 .../quotas/TestNamespaceQuotaViolationStore.java   |    20 +-
 .../apache/hadoop/hbase/quotas/TestQuotaAdmin.java |    76 +-
 .../apache/hadoop/hbase/quotas/TestQuotaCache.java |    23 +-
 .../hadoop/hbase/quotas/TestQuotaCache2.java       |    19 +-
 .../hbase/quotas/TestQuotaObserverChore.java       |    18 +-
 .../TestQuotaObserverChoreRegionReports.java       |    31 +-
 .../TestQuotaObserverChoreWithMiniCluster.java     |   113 +-
 .../apache/hadoop/hbase/quotas/TestQuotaState.java |    38 +-
 .../hadoop/hbase/quotas/TestQuotaStatusRPCs.java   |    56 +-
 .../hadoop/hbase/quotas/TestQuotaTableUtil.java    |    73 +-
 .../hadoop/hbase/quotas/TestQuotaThrottle.java     |    35 +-
 .../hadoop/hbase/quotas/TestQuotaUserOverride.java |    25 +-
 .../hadoop/hbase/quotas/TestRateLimiter.java       |    21 +-
 .../quotas/TestRegionServerSpaceQuotaManager.java  |    24 +-
 .../hadoop/hbase/quotas/TestRegionSizeImpl.java    |    13 +-
 .../hbase/quotas/TestRegionSizeReportingChore.java |    17 +-
 .../hbase/quotas/TestRegionSizeStoreImpl.java      |    21 +-
 .../hadoop/hbase/quotas/TestRegionSizeUse.java     |    40 +-
 .../quotas/TestSnapshotQuotaObserverChore.java     |    52 +-
 .../quotas/TestSpaceQuotaBasicFunctioning.java     |    50 +-
 .../hbase/quotas/TestSpaceQuotaDropTable.java      |    42 +-
 .../hbase/quotas/TestSpaceQuotaIncrease.java       |    36 +-
 .../hbase/quotas/TestSpaceQuotaOnBulkLoad.java     |    59 +-
 .../quotas/TestSpaceQuotaOnNonExistingTables.java  |    34 +-
 .../hadoop/hbase/quotas/TestSpaceQuotaRemoval.java |    36 +-
 .../hbase/quotas/TestSpaceQuotaSwitchPolicies.java |    36 +-
 ...estSpaceQuotaViolationPolicyRefresherChore.java |    18 +-
 .../quotas/TestSpaceQuotasWithRegionReplicas.java  |    34 +-
 .../hbase/quotas/TestSpaceQuotasWithSnapshots.java |    56 +-
 .../quotas/TestSuperUserQuotaPermissions.java      |    40 +-
 .../hbase/quotas/TestTableQuotaViolationStore.java |    20 +-
 .../TestTableSpaceQuotaViolationNotifier.java      |    16 +-
 .../hadoop/hbase/quotas/TestTablesWithQuotas.java  |    37 +-
 .../hbase/quotas/TestThreadHandlerUsageQuota.java  |    40 +-
 .../hadoop/hbase/quotas/ThrottleQuotaTestUtil.java |     2 +-
 ...BulkLoadCheckingViolationPolicyEnforcement.java |    29 +-
 ...TestDisableTableViolationPolicyEnforcement.java |    34 +-
 .../TestNoInsertsViolationPolicyEnforcement.java   |    30 +-
 ...ritesCompactionsViolationPolicyEnforcement.java |    34 +-
 .../TestNoWritesViolationPolicyEnforcement.java    |    34 +-
 .../regionserver/DelegatingKeyValueScanner.java    |     6 +
 .../MetricsRegionServerWrapperStub.java            |    40 +
 .../regionserver/MetricsRegionWrapperStub.java     |    20 +
 .../hbase/regionserver/NoOpScanPolicyObserver.java |     3 +-
 .../hbase/regionserver/TestCompactingMemStore.java |    15 +-
 .../TestCompactingToCellFlatMapMemStore.java       |    14 +-
 .../hadoop/hbase/regionserver/TestCompaction.java  |    44 +-
 .../TestCompactionArchiveConcurrentClose.java      |     6 +-
 .../TestCompactionArchiveIOException.java          |     1 +
 .../hbase/regionserver/TestCompactionPolicy.java   |     1 +
 .../TestCompactionWithCoprocessor.java             |     4 +-
 .../TestCustomCellDataTieringManager.java          |    36 +-
 .../hbase/regionserver/TestDataTieringManager.java |   291 +-
 .../hbase/regionserver/TestDefaultMemStore.java    |    52 +-
 .../regionserver/TestDirectStoreSplitsMerges.java  |    14 +-
 .../regionserver/TestFailedAppendAndSync.java      |     1 +
 .../hadoop/hbase/regionserver/TestHMobStore.java   |   102 +-
 .../hadoop/hbase/regionserver/TestHRegion.java     |   151 +-
 .../hbase/regionserver/TestHRegionFileSystem.java  |     6 +-
 .../regionserver/TestHRegionReplayEvents.java      |    21 +-
 .../hadoop/hbase/regionserver/TestHStoreFile.java  |    10 +-
 .../hbase/regionserver/TestHeapMemoryManager.java  |     6 +
 .../hbase/regionserver/TestKeyValueHeap.java       |    76 +
 .../hadoop/hbase/regionserver/TestLogRoller.java   |     5 +-
 .../regionserver/TestMergesSplitsAddToTracker.java |     8 +-
 .../hbase/regionserver/TestMetricsRegion.java      |     6 +
 .../regionserver/TestMetricsRegionServer.java      |    14 +
 ...estMetricsRegionWrapperTableDescriptorHash.java |   155 +
 .../regionserver/TestMetricsTableAggregate.java    |    16 +
 .../TestRecoveredEditsReplayAndAbort.java          |     3 +-
 .../TestRegionMergeTransactionOnCluster.java       |    17 +-
 .../regionserver/TestRegionReplicaFailover.java    |     3 +-
 .../hbase/regionserver/TestRegionReplicas.java     |    60 +-
 .../regionserver/TestRegionServerMetrics.java      |    18 +
 .../TestRegionServerOnlineConfigChange.java        |    12 +-
 .../regionserver/TestSCVFWithMiniCluster.java      |    23 +-
 .../hbase/regionserver/TestScanWithBloomError.java |    41 +-
 .../hadoop/hbase/regionserver/TestScanner.java     |    44 +-
 .../regionserver/TestScannerBlockSizeLimits.java   |    30 +-
 .../regionserver/TestScannerHeartbeatMessages.java |    34 +-
 .../hbase/regionserver/TestScannerLeaseCount.java  |    25 +-
 .../regionserver/TestScannerRPCScanMetrics.java    |    33 +-
 .../regionserver/TestScannerRetriableFailure.java  |    35 +-
 .../regionserver/TestScannerTimeoutHandling.java   |    31 +-
 .../regionserver/TestScannerWithBulkload.java      |    54 +-
 .../regionserver/TestScannerWithCorruptHFile.java  |    35 +-
 .../regionserver/TestSecureBulkLoadManager.java    |    58 +-
 .../regionserver/TestSecureBulkloadListener.java   |   101 +-
 .../hbase/regionserver/TestSeekOptimizations.java  |    46 +-
 .../hbase/regionserver/TestServerNonceManager.java |    21 +-
 .../TestSettingTimeoutOnBlockingPoint.java         |    42 +-
 .../regionserver/TestShutdownWhileWALBroken.java   |    46 +-
 .../regionserver/TestSimpleTimeRangeTracker.java   |    22 +-
 .../hbase/regionserver/TestSplitLogWorker.java     |    31 +-
 .../TestSplitTransactionOnCluster.java             |   176 +-
 .../hbase/regionserver/TestSplitWalDataLoss.java   |    24 +-
 .../regionserver/TestSplitWithBlockingFiles.java   |    37 +-
 .../hbase/regionserver/TestStoreFileInfo.java      |    46 +-
 .../regionserver/TestStoreFileRefresherChore.java  |    44 +-
 .../hbase/regionserver/TestStoreFileScanner.java   |   124 +
 .../TestStoreFileScannerWithTagCompression.java    |    20 +-
 .../hbase/regionserver/TestStoreFileWriter.java    |    72 +-
 .../hbase/regionserver/TestStoreScanner.java       |   268 +-
 .../regionserver/TestStoreScannerClosure.java      |    29 +-
 .../hbase/regionserver/TestStripeStoreEngine.java  |    19 +-
 .../regionserver/TestStripeStoreFileManager.java   |    31 +-
 .../hbase/regionserver/TestSwitchToStreamRead.java |   123 +-
 .../regionserver/TestSyncTimeRangeTracker.java     |    23 +-
 .../TestTableDescriptorHashComputation.java        |   122 +
 .../apache/hadoop/hbase/regionserver/TestTags.java |   589 +-
 .../hbase/regionserver/TestTagsReverseScan.java    |   158 +
 .../regionserver/TestTimestampFilterSeekHint.java  |    19 +-
 .../TestWALMonotonicallyIncreasingSeqId.java       |    63 +-
 .../TestWalAndCompactingMemStoreFlush.java         |    57 +-
 .../hadoop/hbase/regionserver/TestWideScanner.java |    26 +-
 .../compactions/PerfTestCompactionPolicies.java    |    46 +-
 .../regionserver/compactions/TestCloseChecker.java |    16 +-
 .../compactions/TestCompactedHFilesDischarger.java |    45 +-
 .../regionserver/compactions/TestCompactor.java    |    16 +-
 .../compactions/TestCurrentHourProvider.java       |    15 +-
 .../compactions/TestCustomCellTieredCompactor.java |   203 +-
 .../compactions/TestDateTieredCompactor.java       |    44 +-
 .../compactions/TestFIFOCompactionPolicy.java      |    63 +-
 .../regionserver/compactions/TestOffPeakHours.java |    25 +-
 .../TestRowKeyDateTieringValueProvider.java        |   174 +
 .../compactions/TestStripeCompactionPolicy.java    |    80 +-
 .../compactions/TestStripeCompactor.java           |    44 +-
 .../hbase/regionserver/http/TestRSStatusPage.java  |    59 +-
 .../metrics/TestMetricsThrottleExceptions.java     |    39 +-
 .../querymatcher/AbstractTestScanQueryMatcher.java |     4 +-
 .../TestCompactionScanQueryMatcher.java            |   131 +-
 .../querymatcher/TestExplicitColumnTracker.java    |    15 +-
 .../TestNewVersionBehaviorTracker.java             |    15 +-
 .../querymatcher/TestScanDeleteTracker.java        |    19 +-
 .../TestScanWildcardColumnTracker.java             |    17 +-
 .../querymatcher/TestUserScanQueryMatcher.java     |   385 +-
 .../TestRegionReplicationBufferManager.java        |    25 +-
 .../TestRegionReplicationFlushRequester.java       |    17 +-
 .../TestRegionReplicationForFlushMarker.java       |    25 +-
 .../TestRegionReplicationForSkipWAL.java           |    25 +-
 .../TestRegionReplicationForWriteException.java    |    29 +-
 .../TestRegionReplicationSink.java                 |    31 +-
 ...eplicationSinkCallbackAndFlushConcurrently.java |    24 +-
 ...StartupWithLegacyRegionReplicationEndpoint.java |    27 +-
 .../TestChangeStoreFileTracker.java                |    71 +-
 .../TestMigrationStoreFileTracker.java             |    70 +-
 .../TestRegionWithFileBasedStoreFileTracker.java   |    35 +-
 .../storefiletracker/TestStoreFileListFile.java    |    89 +-
 .../TestStoreFileListFilePrinter.java              |    31 +-
 .../TestStoreFileTrackerFactory.java               |    15 +-
 .../TestStoreFileTrackerValidationUtils.java       |    15 +-
 .../TestCompactionWithThroughputController.java    |    17 +-
 .../TestFlushWithThroughputController.java         |    37 +-
 .../throttle/TestStoreHotnessProtector.java        |    30 +-
 .../hbase/regionserver/wal/AbstractTestFSWAL.java  |    74 +-
 .../wal/AbstractTestLogRollPeriod.java             |    10 +-
 .../regionserver/wal/AbstractTestLogRolling.java   |    63 +-
 .../regionserver/wal/AbstractTestProtobufLog.java  |    33 +-
 .../regionserver/wal/AbstractTestWALReplay.java    |    61 +-
 .../regionserver/wal/ProtobufLogTestHelper.java    |    12 +-
 .../hbase/regionserver/wal/TestAsyncFSWAL.java     |    30 +-
 .../regionserver/wal/TestAsyncFSWALDurability.java |    23 +-
 .../regionserver/wal/TestAsyncFSWALRollStuck.java  |    22 +-
 .../regionserver/wal/TestAsyncLogRollPeriod.java   |    15 +-
 .../regionserver/wal/TestAsyncLogRolling.java      |    20 +-
 .../regionserver/wal/TestAsyncProtobufLog.java     |    24 +-
 .../hbase/regionserver/wal/TestAsyncWALReplay.java |    39 +-
 .../wal/TestAsyncWALReplayCompressed.java          |    15 +-
 .../wal/TestAsyncWALReplayValueCompression.java    |    15 +-
 .../regionserver/wal/TestCombinedAsyncWriter.java  |    35 +-
 .../hbase/regionserver/wal/TestCompressor.java     |    27 +-
 .../regionserver/wal/TestCustomWALCellCodec.java   |    28 +-
 .../hbase/regionserver/wal/TestDurability.java     |    72 +-
 .../hadoop/hbase/regionserver/wal/TestFSHLog.java  |    50 +-
 .../regionserver/wal/TestFSHLogDurability.java     |    15 +-
 .../hbase/regionserver/wal/TestFSWALEntry.java     |    15 +-
 .../hbase/regionserver/wal/TestHBaseWalOnEC.java   |    58 +-
 .../hbase/regionserver/wal/TestLogRollAbort.java   |    64 +-
 .../hbase/regionserver/wal/TestLogRollPeriod.java  |    15 +-
 .../hbase/regionserver/wal/TestLogRolling.java     |    79 +-
 .../regionserver/wal/TestLogRollingNoCluster.java  |    17 +-
 .../hbase/regionserver/wal/TestMetricsWAL.java     |    31 +-
 .../hbase/regionserver/wal/TestProtobufLog.java    |    11 +-
 .../regionserver/wal/TestSecureAsyncWALReplay.java |    15 +-
 .../regionserver/wal/TestSecureWALReplay.java      |    27 +-
 .../regionserver/wal/TestSequenceIdAccounting.java |    22 +-
 .../hbase/regionserver/wal/TestSyncFuture.java     |    27 +-
 .../regionserver/wal/TestSyncFutureCache.java      |    19 +-
 .../regionserver/wal/TestWALActionsListener.java   |    27 +-
 .../wal/TestWALCellCodecWithCompression.java       |    47 +-
 .../regionserver/wal/TestWALConfiguration.java     |    47 +-
 .../hadoop/hbase/regionserver/wal/TestWALEdit.java |    15 +-
 .../hbase/regionserver/wal/TestWALReplay.java      |    23 +-
 .../wal/TestWALReplayBoundedLogWriterCreation.java |    25 +-
 .../regionserver/wal/TestWALReplayCompressed.java  |    25 +-
 .../wal/TestWALReplayValueCompression.java         |    25 +-
 .../wal/TestWALSyncTimeoutException.java           |    25 +-
 .../regionserver/wal/WALDurabilityTestBase.java    |    37 +-
 .../hbase/replication/TestReplicationBase.java     |     8 +
 .../TestReplicationStuckWithDroppedTable.java      |     2 +-
 .../TestTableReplicationQueueStorage.java          |    67 +-
 .../regionserver/TestBasicWALEntryStream.java      |    52 +
 .../regionserver/TestPeerProcedureHandlerImpl.java |   130 +
 .../regionserver/TestReplicationSourceManager.java |   100 +
 .../hbase/rsgroup/EnableRSGroupsTestBase.java      |    14 +-
 .../hadoop/hbase/rsgroup/TestEnableRSGroups.java   |    11 +-
 .../rsgroup/TestEnableRSGroupsCompatibility.java   |    11 +-
 .../hbase/rsgroup/TestMigrateRSGroupInfo.java      |    30 +-
 .../hadoop/hbase/rsgroup/TestRSGroupConfig.java    |    35 +-
 .../rsgroup/TestRSGroupMajorCompactionTTL.java     |    27 +-
 .../hbase/rsgroup/TestRSGroupMappingScript.java    |    34 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsAdmin1.java   |    56 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsAdmin2.java   |    52 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsBalance.java  |    40 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsBase.java     |    23 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsBasics.java   |    43 +-
 .../hbase/rsgroup/TestRSGroupsCPHookCalled.java    |    36 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsFallback.java |    36 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsKillRS.java   |    40 +-
 .../hbase/rsgroup/TestRSGroupsOfflineMode.java     |    38 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsWithACL.java  |    25 +-
 .../rsgroup/TestUpdateRSGroupConfiguration.java    |    37 +-
 .../hbase/rsgroup/VerifyingRSGroupAdmin.java       |    16 +-
 .../hbase/security/AbstractTestMutualTls.java      |    64 +-
 .../hbase/security/AbstractTestSecureIPC.java      |   170 +-
 .../security/AbstractTestTlsRejectPlainText.java   |    42 +-
 ...stMultipleServerPrincipalsFallbackToSimple.java |    59 +-
 .../hbase/security/TestMutualTlsClientSide.java    |    46 +-
 .../TestMutualTlsClientSideNonLocalhost.java       |    63 +-
 .../hbase/security/TestMutualTlsServerSide.java    |    80 +-
 .../hbase/security/TestNettyIPCSslFailure.java     |    31 +-
 .../hbase/security/TestNettyTLSIPCFileWatcher.java |    66 +-
 .../security/TestNettyTlsIPCRejectPlainText.java   |    30 +-
 .../hadoop/hbase/security/TestSaslTlsIPC.java      |    74 +-
 .../security/TestSaslTlsIPCRejectPlainText.java    |    34 +-
 .../hadoop/hbase/security/TestSecureIPC.java       |    49 +-
 ...estSecurityInfoAndHBasePolicyProviderMatch.java |    27 +-
 .../org/apache/hadoop/hbase/security/TestUser.java |    56 +-
 .../TestUsersOperationsWithSecureHadoop.java       |    74 +-
 .../hbase/security/access/SecureTestUtil.java      |     4 +-
 .../security/access/TestAccessControlFilter.java   |    81 +-
 .../security/access/TestAccessController.java      |   123 +-
 .../security/access/TestAccessController2.java     |    76 +-
 .../security/access/TestAccessController3.java     |    45 +-
 .../access/TestCellACLWithMultipleVersions.java    |    41 +-
 .../hadoop/hbase/security/access/TestCellACLs.java |    39 +-
 .../TestCoprocessorWhitelistMasterObserver.java    |    21 +-
 .../hbase/security/access/TestHDFSAclHelper.java   |     2 +-
 .../security/access/TestNamespaceCommands.java     |    25 +-
 .../security/access/TestPermissionBuilder.java     |    19 +-
 .../hbase/security/access/TestRpcAccessChecks.java |    59 +-
 .../security/access/TestScanEarlyTermination.java  |    83 +-
 .../TestSnapshotScannerHDFSAclController.java      |   245 +-
 .../TestSnapshotScannerHDFSAclController2.java     |    37 +-
 .../security/access/TestTablePermissions.java      |   121 +-
 .../access/TestUnloadAccessController.java         |    23 +-
 .../access/TestWithDisabledAuthorization.java      |    39 +-
 .../security/access/TestZKPermissionWatcher.java   |    25 +-
 .../CustomSaslAuthenticationProviderTestBase.java  |    63 +-
 ...omSaslAuthenticationProviderNettyRpcServer.java |    22 +-
 ...mSaslAuthenticationProviderSimpleRpcServer.java |    22 +-
 .../TestSaslServerAuthenticationProviders.java     |    62 +-
 .../hbase/security/token/SecureTestCluster.java    |    12 +-
 .../security/token/TestAuthenticationKey.java      |    17 +-
 .../token/TestDelegationTokenWithEncryption.java   |    63 +-
 .../security/token/TestFsDelegationToken.java      |    25 +-
 .../token/TestGenerateDelegationToken.java         |    54 +-
 .../security/token/TestTokenAuthentication.java    |    80 +-
 .../hbase/security/token/TestZKSecretWatcher.java  |    36 +-
 .../token/TestZKSecretWatcherRefreshKeys.java      |    29 +-
 .../TestDefaultScanLabelGeneratorStack.java        |    36 +-
 .../TestEnforcingScanLabelGenerator.java           |    54 +-
 .../visibility/TestExpressionExpander.java         |    17 +-
 .../security/visibility/TestExpressionParser.java  |    19 +-
 ...tVisibilityLabelReplicationWithExpAsString.java |    27 +-
 .../security/visibility/TestVisibilityLabels.java  |   887 -
 ...tVisibilityLabelsOnNewVersionBehaviorTable.java |    18 +-
 ...tVisibilityLabelsOpWithDifferentUsersNoACL.java |    29 +-
 .../TestVisibilityLabelsReplication.java           |    47 +-
 .../visibility/TestVisibilityLabelsWithACL.java    |    54 +-
 ...estVisibilityLabelsWithCustomVisLabService.java |    25 +-
 ...VisibilityLabelsWithDefaultVisLabelService.java |    45 +-
 .../TestVisibilityLabelsWithDeletes.java           |   255 +-
 .../TestVisibilityLabelsWithSLGStack.java          |    34 +-
 .../visibility/TestVisibilityLablesWithGroups.java |    38 +-
 .../visibility/TestVisibilityWithCheckAuths.java   |    42 +-
 .../visibility/TestWithDisabledAuthorization.java  |    40 +-
 .../visibility/VisibilityLabelsTestBase.java       |   878 +
 .../VisibilityLabelsWithDeletesTestBase.java       |    65 +-
 .../hbase/snapshot/MobSnapshotTestingUtils.java    |     6 +-
 .../hbase/snapshot/SnapshotTestingUtils.java       |    45 +-
 .../TestConcurrentFlushSnapshotFromClient.java     |    20 +-
 .../snapshot/TestFlushSnapshotFromClient.java      |    39 +-
 .../snapshot/TestMobFlushSnapshotFromClient.java   |    19 +-
 .../TestMobRestoreFlushSnapshotFromClient.java     |    15 +-
 .../snapshot/TestMobRestoreSnapshotHelper.java     |    10 +-
 .../hbase/snapshot/TestRegionSnapshotTask.java     |    27 +-
 .../TestRestoreFlushSnapshotFromClient.java        |    44 +-
 .../hbase/snapshot/TestRestoreSnapshotHelper.java  |    53 +-
 .../hbase/snapshot/TestSnapshotClientRetries.java  |    49 +-
 .../snapshot/TestSnapshotDescriptionUtils.java     |    32 +-
 .../hbase/snapshot/TestSnapshotManifest.java       |    23 +-
 .../hbase/snapshot/TestSnapshotStoreFileSize.java  |    26 +-
 .../snapshot/TestSnapshotWhenChoreCleaning.java    |    37 +-
 .../tool/BulkLoadHFilesSplitRecoveryTestBase.java  |   538 +
 .../hadoop/hbase/tool/BulkLoadHFilesTestBase.java  |   911 +
 .../SecureBulkLoadHFilesSplitRecoveryTest.java     |    68 +
 .../hadoop/hbase/tool/TestBulkLoadHFiles.java      |   901 +-
 .../hadoop/hbase/tool/TestBulkLoadHFilesSFT.java   |    17 +-
 .../tool/TestBulkLoadHFilesSplitRecovery.java      |   531 +-
 .../hadoop/hbase/tool/TestCanaryStatusServlet.java |   111 -
 .../apache/hadoop/hbase/tool/TestCanaryTool.java   |   325 +-
 .../hbase/tool/TestSecureBulkLoadHFiles.java       |    17 +-
 .../TestSecureBulkLoadHFilesSplitRecovery.java     |    71 -
 .../tool/coprocessor/CoprocessorValidatorTest.java |    16 +-
 .../hadoop/hbase/util/BaseTestHBaseFsck.java       |     8 +-
 .../org/apache/hadoop/hbase/util/MockServer.java   |     6 +
 .../hadoop/hbase/util/TestBloomFilterChunk.java    |    19 +-
 .../util/TestBoundedPriorityBlockingQueue.java     |    33 +-
 .../hadoop/hbase/util/TestByteBuffUtils.java       |    15 +-
 .../hadoop/hbase/util/TestCanaryStatusUtil.java    |    56 +
 .../hadoop/hbase/util/TestCompressionTest.java     |    19 +-
 .../hadoop/hbase/util/TestConfigurationUtil.java   |    20 +-
 .../hadoop/hbase/util/TestConnectionCache.java     |    23 +-
 .../hbase/util/TestCoprocessorScanPolicy.java      |    43 +-
 .../hbase/util/TestDefaultEnvironmentEdge.java     |    23 +-
 .../hadoop/hbase/util/TestEncryptionTest.java      |    43 +-
 .../hadoop/hbase/util/TestFSTableDescriptors.java  |   180 +-
 .../org/apache/hadoop/hbase/util/TestFSUtils.java  |    70 +-
 .../apache/hadoop/hbase/util/TestFSVisitor.java    |    23 +-
 .../hbase/util/TestFromClientSide1WoUnsafe.java    |    66 +
 .../hbase/util/TestFromClientSide2WoUnsafe.java    |    66 +
 .../hbase/util/TestFromClientSide3WoUnsafe.java    |    27 +-
 .../hadoop/hbase/util/TestHBaseConfTool.java       |    17 +-
 .../TestHBaseFsckCleanReplicationBarriers.java     |    58 +-
 .../hadoop/hbase/util/TestHBaseFsckComparator.java |    17 +-
 .../hadoop/hbase/util/TestHBaseFsckEncryption.java |    39 +-
 .../apache/hadoop/hbase/util/TestHBaseFsckMOB.java |    36 +-
 .../hbase/util/TestHBaseFsckReplication.java       |    33 +-
 .../TestHBaseFsckWithoutTableHbaseReplication.java |    40 +-
 .../hadoop/hbase/util/TestHFileArchiveUtil.java    |    40 +-
 .../org/apache/hadoop/hbase/util/TestIdLock.java   |    14 +-
 .../hbase/util/TestIdReadWriteLockStrongRef.java   |    20 +-
 .../util/TestIdReadWriteLockWithObjectPool.java    |    42 +-
 .../util/TestIncrementingEnvironmentEdge.java      |    15 +-
 .../hadoop/hbase/util/TestJSONMetricUtil.java      |    19 +-
 .../hadoop/hbase/util/TestLossyCounting.java       |    17 +-
 .../hadoop/hbase/util/TestProcDispatcher.java      |    48 +-
 .../apache/hadoop/hbase/util/TestRegionMover1.java |    66 +-
 .../apache/hadoop/hbase/util/TestRegionMover2.java |    89 +-
 .../apache/hadoop/hbase/util/TestRegionMover3.java |    59 +-
 .../hadoop/hbase/util/TestRegionMoverUseIp.java    |    49 +-
 .../util/TestRegionMoverWithRSGroupEnable.java     |    27 +-
 .../hbase/util/TestRegionSplitCalculator.java      |    17 +-
 .../hadoop/hbase/util/TestRegionSplitter.java      |    45 +-
 .../org/apache/hadoop/hbase/util/TestRootPath.java |    15 +-
 .../hadoop/hbase/util/TestServerHttpUtils.java     |    68 +
 .../apache/hadoop/hbase/util/TestSortedList.java   |    19 +-
 .../hadoop/hbase/util/TestStealJobQueue.java       |    31 +-
 .../hbase/util/TestTableDescriptorChecker.java     |    59 +-
 .../hadoop/hbase/util/TestZKStringFormatter.java   |    19 +-
 .../compaction/TestMajorCompactionRequest.java     |    21 +-
 .../compaction/TestMajorCompactionTTLRequest.java  |    19 +-
 .../hbase/util/compaction/TestMajorCompactor.java  |    29 +-
 .../util/compaction/TestMajorCompactorTTL.java     |    34 +-
 .../hadoop/hbase/wal/CompressedWALTestBase.java    |    31 +-
 ...syncFSWALCorruptionDueToDanglingByteBuffer.java |    19 +-
 .../wal/TestBoundedRegionGroupingStrategy.java     |    58 +-
 .../apache/hadoop/hbase/wal/TestCompressedWAL.java |    43 +-
 .../wal/TestCompressedWALValueCompression.java     |    41 +-
 .../apache/hadoop/hbase/wal/TestDisabledWAL.java   |    44 +-
 ...estFSHLogCorruptionDueToDanglingByteBuffer.java |    19 +-
 ...ruptionWithMultiPutDueToDanglingByteBuffer.java |    19 +-
 .../hadoop/hbase/wal/TestFSHLogProvider.java       |    79 +-
 .../hadoop/hbase/wal/TestOutputSinkWriter.java     |    27 +-
 .../hadoop/hbase/wal/TestParsePartialWALFile.java  |    27 +-
 .../hbase/wal/TestRaceBetweenGetWALAndGetWALs.java |    17 +-
 .../hadoop/hbase/wal/TestReadWriteSeqIdFiles.java  |    23 +-
 .../hbase/wal/TestRecoveredEditsOutputSink.java    |    23 +-
 .../org/apache/hadoop/hbase/wal/TestSecureWAL.java |    86 +-
 .../apache/hadoop/hbase/wal/TestWALFactory.java    |   113 +-
 .../apache/hadoop/hbase/wal/TestWALFiltering.java  |    23 +-
 .../apache/hadoop/hbase/wal/TestWALMethods.java    |    25 +-
 .../hbase/wal/TestWALOpenAfterDNRollingStart.java  |    52 +-
 .../apache/hadoop/hbase/wal/TestWALProvider.java   |    14 +-
 .../apache/hadoop/hbase/wal/TestWALRootDir.java    |    32 +-
 .../org/apache/hadoop/hbase/wal/TestWALSplit.java  |   111 +-
 .../wal/TestWALSplitBoundedLogWriterCreation.java  |    15 +-
 .../hadoop/hbase/wal/TestWALSplitCompressed.java   |    15 +-
 .../hadoop/hbase/wal/TestWALSplitToHFile.java      |    64 +-
 .../hbase/wal/TestWALSplitValueCompression.java    |    15 +-
 .../wal/TestWALSplitWithDeletedTableData.java      |    28 +-
 .../hadoop/hbase/wal/TestWrongMetaWALFileName.java |    23 +-
 ...LCorruptionDueToDanglingByteBufferTestBase.java |     6 +-
 ...ithMultiPutDueToDanglingByteBufferTestBase.java |     4 +-
 .../hadoop/hbase/zookeeper/TestZooKeeperACL.java   |    31 +-
 hbase-shaded/pom.xml                               |    18 +-
 hbase-shell/pom.xml                                |    11 +-
 hbase-shell/src/main/ruby/hbase/admin.rb           |    34 +-
 hbase-shell/src/main/ruby/hbase/hbase.rb           |    10 +-
 hbase-shell/src/main/ruby/hbase/quotas.rb          |     4 +
 hbase-shell/src/main/ruby/hbase_constants.rb       |   156 +-
 hbase-shell/src/main/ruby/irb/hirb.rb              |    46 +-
 hbase-shell/src/main/ruby/jar-bootstrap.rb         |     4 +-
 hbase-shell/src/main/ruby/shell.rb                 |   119 +-
 hbase-shell/src/main/ruby/shell/commands.rb        |    76 +-
 .../src/main/ruby/shell/commands/alter_async.rb    |     4 +-
 .../src/main/ruby/shell/commands/reopen_regions.rb |    37 +
 .../ruby/shell/commands/rpc_throttle_enabled.rb    |    42 +
 .../main/ruby/shell/commands/update_all_config.rb  |     2 +-
 .../src/main/ruby/shell/commands/update_config.rb  |     2 +-
 .../ruby/shell/commands/update_rsgroup_config.rb   |     2 +-
 .../hadoop/hbase/client/AbstractTestShell.java     |    10 +-
 .../apache/hadoop/hbase/client/RubyShellTest.java  |     2 +-
 .../apache/hadoop/hbase/client/TestAdminShell.java |    18 +-
 .../hadoop/hbase/client/TestListTablesShell.java   |    10 +-
 .../hadoop/hbase/client/TestQuotasShell.java       |    10 +-
 .../hadoop/hbase/client/TestRSGroupShell.java      |    15 +-
 .../hadoop/hbase/client/TestReplicationShell.java  |    10 +-
 .../org/apache/hadoop/hbase/client/TestShell.java  |     9 +-
 .../hadoop/hbase/client/TestShellNoCluster.java    |    18 +-
 .../apache/hadoop/hbase/client/TestTableShell.java |    12 +-
 hbase-shell/src/test/ruby/hbase/quotas_test.rb     |    15 +
 .../test/ruby/hbase/reopen_regions_test_cluster.rb |    66 +
 .../src/test/ruby/shell/general_test_cluster.rb    |    79 +-
 .../test/ruby/shell/noninteractive_test_cluster.rb |     2 +-
 hbase-shell/src/test/ruby/test_helper.rb           |     2 +-
 hbase-shell/src/test/ruby/tests_runner.rb          |     2 +
 .../apache/hadoop/hbase/HBaseTestingUtility.java   |    44 +-
 .../org/apache/hadoop/hbase/MiniHBaseCluster.java  |    48 +-
 hbase-thrift/pom.xml                               |     5 -
 .../hbase/thrift/HThreadedSelectorServerArgs.java  |     2 +-
 .../apache/hadoop/hbase/thrift/ThriftServer.java   |     4 +-
 .../apache/hadoop/hbase/thrift2/ThriftServer.java  |     2 +-
 .../hadoop/hbase/thrift2/client/ThriftAdmin.java   |    10 +
 .../main/resources/hbase-webapps/thrift/thrift.jsp |     2 +-
 .../hbase/thrift/TestBindExceptionHandling.java    |    14 +-
 .../apache/hadoop/hbase/thrift/TestCallQueue.java  |    37 +-
 .../hadoop/hbase/thrift/TestThriftHttpServer.java  |   181 +-
 .../hbase/thrift/TestThriftHttpServerBase.java     |   184 +
 .../hbase/thrift/TestThriftHttpServerSSL.java      |    30 +-
 .../hadoop/hbase/thrift/TestThriftServer.java      |    55 +-
 .../hbase/thrift/TestThriftServerCmdLine.java      |    45 +-
 .../thrift/TestThriftSpnegoHttpFallbackServer.java |    45 +-
 .../hbase/thrift/TestThriftSpnegoHttpServer.java   |    47 +-
 .../hbase/thrift2/TestThrift2HttpServer.java       |    36 +-
 .../hbase/thrift2/TestThrift2ServerCmdLine.java    |    28 +-
 .../hadoop/hbase/thrift2/TestThriftConnection.java |    34 +-
 .../thrift2/TestThriftHBaseServiceHandler.java     |    69 +-
 .../TestThriftHBaseServiceHandlerWithLabels.java   |    37 +-
 .../TestThriftHBaseServiceHandlerWithReadOnly.java |    33 +-
 hbase-website/.dockerignore                        |     4 +
 hbase-website/.gitignore                           |    49 +
 hbase-website/Dockerfile                           |    40 +
 hbase-website/README.md                            |   598 +
 hbase-website/app/app.css                          |   287 +
 .../app/components/docs/layout/docs/client.tsx     |   157 +
 .../app/components/docs/layout/docs/index.tsx      |   285 +
 .../components/docs/layout/docs/page/client.tsx    |   384 +
 .../app/components/docs/layout/docs/page/index.tsx |   246 +
 .../app/components/docs/layout/docs/sidebar.tsx    |   264 +
 .../app/components/docs/layout/language-toggle.tsx |    77 +
 .../app/components/docs/layout/link-item.tsx       |   128 +
 .../app/components/docs/layout/search-toggle.tsx   |    94 +
 .../app/components/docs/layout/shared.tsx          |   120 +
 .../app/components/docs/layout/sidebar/base.tsx    |   423 +
 .../components/docs/layout/sidebar/link-item.tsx   |    78 +
 .../components/docs/layout/sidebar/page-tree.tsx   |   109 +
 .../docs/layout/sidebar/tabs/dropdown.tsx          |   124 +
 .../components/docs/layout/sidebar/tabs/index.tsx  |   101 +
 .../app/components/docs/layout/theme-toggle.tsx    |    93 +
 .../app/components/docs/search/create-db.ts        |   110 +
 .../components/docs/search/create-from-source.ts   |   136 +
 .../app/components/docs/search/docs-search.tsx     |    78 +
 hbase-website/app/components/docs/search/static.ts |   324 +
 .../app/components/docs/search/use-docs-search.ts  |   137 +
 hbase-website/app/components/docs/search/utils.ts  |    83 +
 hbase-website/app/components/docs/toc/clerk.tsx    |   182 +
 hbase-website/app/components/docs/toc/default.tsx  |    70 +
 hbase-website/app/components/docs/toc/index.tsx    |   133 +
 hbase-website/app/components/getting-started.tsx   |    68 +
 hbase-website/app/components/link.tsx              |    28 +
 hbase-website/app/components/links.ts              |   222 +
 hbase-website/app/components/mdx-components.tsx    |   122 +
 hbase-website/app/components/site-footer.tsx       |   113 +
 hbase-website/app/components/site-navbar.tsx       |   675 +
 hbase-website/app/components/theme-toggle.tsx      |    37 +
 .../app/lib/export-pdf/export-pdf-types.ts         |    25 +
 hbase-website/app/lib/source.ts                    |    25 +
 hbase-website/app/lib/theme-provider.tsx           |    85 +
 hbase-website/app/lib/urls.ts                      |    32 +
 hbase-website/app/lib/utils.ts                     |    37 +
 hbase-website/app/pages/_docs/docs-layout.tsx      |    33 +
 .../_docs/docs/_mdx/(multi-page)/acl-matrix.mdx    |   154 +
 .../pages/_docs/docs/_mdx/(multi-page)/amv2.mdx    |   146 +
 .../(multi-page)/architecture/bulk-loading.mdx     |    83 +
 .../(multi-page)/architecture/catalog-tables.mdx   |    38 +
 .../architecture/client-request-filters.mdx        |   251 +
 .../docs/_mdx/(multi-page)/architecture/client.mdx |   270 +
 .../_mdx/(multi-page)/architecture/hbase-mob.mdx   |   685 +
 .../docs/_mdx/(multi-page)/architecture/hdfs.mdx   |    16 +
 .../docs/_mdx/(multi-page)/architecture/index.mdx  |    10 +
 .../docs/_mdx/(multi-page)/architecture/master.mdx |    95 +
 .../docs/_mdx/(multi-page)/architecture/meta.json  |    17 +
 .../_mdx/(multi-page)/architecture/overview.mdx    |    36 +
 .../_mdx/(multi-page)/architecture/regions.mdx     |   841 +
 .../(multi-page)/architecture/regionserver.mdx     |   677 +
 .../(multi-page)/architecture/snapshot-scanner.mdx |   112 +
 .../architecture/timeline-consistent-reads.mdx     |   332 +
 .../app/pages/_docs/docs/_mdx/(multi-page)/asf.mdx |    12 +
 .../backup-restore/additional-topics.mdx           |   301 +
 .../(multi-page)/backup-restore/administration.mdx |   172 +
 .../_mdx/(multi-page)/backup-restore/commands.mdx  |   254 +
 .../_mdx/(multi-page)/backup-restore/index.mdx     |     4 +
 .../_mdx/(multi-page)/backup-restore/meta.json     |     9 +
 .../_mdx/(multi-page)/backup-restore/overview.mdx  |   157 +
 .../building-and-developing/announcing.mdx         |    44 +
 .../building-and-developing/building.mdx           |   297 +
 .../developer-guidelines.mdx                       |   809 +
 .../generating-documentation.mdx                   |     9 +
 .../building-and-developing/getting-involved.mdx   |   124 +
 .../(multi-page)/building-and-developing/ides.mdx  |   126 +
 .../(multi-page)/building-and-developing/index.mdx |     7 +
 .../(multi-page)/building-and-developing/meta.json |    16 +
 .../building-and-developing/releasing.mdx          |   401 +
 .../building-and-developing/repositories.mdx       |    13 +
 .../(multi-page)/building-and-developing/tests.mdx |   810 +
 .../building-and-developing/updating-landing.mdx   |    12 +
 .../building-and-developing/voting.mdx             |    64 +
 .../_mdx/(multi-page)/bulk-data-generator-tool.mdx |   105 +
 .../_docs/docs/_mdx/(multi-page)/case-studies.mdx  |   134 +
 .../_docs/docs/_mdx/(multi-page)/community.mdx     |    67 +
 .../_docs/docs/_mdx/(multi-page)/compression.mdx   |   594 +
 .../configuration/basic-prerequisites.mdx          |   279 +
 .../_mdx/(multi-page)/configuration/confirm.mdx    |    31 +
 .../_mdx/(multi-page)/configuration/default.mdx    |   131 +
 .../_mdx/(multi-page)/configuration/dynamic.mdx    |    91 +
 .../_mdx/(multi-page)/configuration/example.mdx    |    74 +
 .../configuration/hbase-run-models.mdx             |   125 +
 .../_mdx/(multi-page)/configuration/important.mdx  |   268 +
 .../docs/_mdx/(multi-page)/configuration/index.mdx |    47 +
 .../docs/_mdx/(multi-page)/configuration/meta.json |     4 +
 .../(multi-page)/contributing-to-documentation.mdx |   317 +
 .../app/pages/_docs/docs/_mdx/(multi-page)/cp.mdx  |   760 +
 .../_docs/docs/_mdx/(multi-page)/datamodel.mdx     |   559 +
 .../_docs/docs/_mdx/(multi-page)/external-apis.mdx |  1221 +
 .../app/pages/_docs/docs/_mdx/(multi-page)/faq.mdx |   138 +
 .../docs/_mdx/(multi-page)/getting-started.mdx     |   645 +
 .../_docs/docs/_mdx/(multi-page)/hbase-apis.mdx    |   105 +
 .../_docs/docs/_mdx/(multi-page)/hbase-history.mdx |     9 +
 .../_mdx/(multi-page)/hbase-incompatibilities.mdx  |   661 +
 .../pages/_docs/docs/_mdx/(multi-page)/hbtop.mdx   |   264 +
 .../_docs/docs/_mdx/(multi-page)/hfile-format.mdx  |   295 +
 .../pages/_docs/docs/_mdx/(multi-page)/index.mdx   |    88 +
 .../docs/_mdx/(multi-page)/inmemory-compaction.mdx |    85 +
 .../_docs/docs/_mdx/(multi-page)/mapreduce.mdx     |   576 +
 .../pages/_docs/docs/_mdx/(multi-page)/meta.json   |    67 +
 .../docs/_mdx/(multi-page)/offheap-read-write.mdx  |   197 +
 .../backup-and-snapshots.mdx                       |   290 +
 .../operational-management/cluster-replication.mdx |   541 +
 .../(multi-page)/operational-management/index.mdx  |     6 +
 .../(multi-page)/operational-management/meta.json  |    13 +
 .../metrics-and-monitoring.mdx                     |   605 +
 .../(multi-page)/operational-management/node.mdx   |   178 +
 .../operational-management/region-and-capacity.mdx |   408 +
 ...ning-multiple-workloads-on-a-single-cluster.mdx |   254 +
 .../operational-management/table-rename.mdx        |    29 +
 .../(multi-page)/operational-management/tools.mdx  |  1108 +
 .../pages/_docs/docs/_mdx/(multi-page)/orca.mdx    |    16 +
 .../_docs/docs/_mdx/(multi-page)/other-info.mdx    |    42 +
 .../_docs/docs/_mdx/(multi-page)/performance.mdx   |   604 +
 .../_docs/docs/_mdx/(multi-page)/profiler.mdx      |    83 +
 .../_docs/docs/_mdx/(multi-page)/protobuf.mdx      |   193 +
 .../app/pages/_docs/docs/_mdx/(multi-page)/pv2.mdx |   138 +
 .../docs/_mdx/(multi-page)/regionserver-sizing.mdx |   888 +
 .../app/pages/_docs/docs/_mdx/(multi-page)/rpc.mdx |   184 +
 .../_docs/docs/_mdx/(multi-page)/schema-design.mdx |    56 +
 .../_mdx/(multi-page)/security/client-access.mdx   |   298 +
 .../_mdx/(multi-page)/security/data-access.mdx     |   940 +
 .../docs/_mdx/(multi-page)/security/example.mdx    |   134 +
 .../security/hdfs-and-zookeeper-access.mdx         |    22 +
 .../docs/_mdx/(multi-page)/security/index.mdx      |    29 +
 .../docs/_mdx/(multi-page)/security/meta.json      |    12 +
 .../_docs/docs/_mdx/(multi-page)/security/tls.mdx  |   308 +
 .../_mdx/(multi-page)/security/user-access.mdx     |   112 +
 .../docs/_mdx/(multi-page)/security/web-ui.mdx     |   232 +
 .../pages/_docs/docs/_mdx/(multi-page)/shell.mdx   |   445 +
 .../pages/_docs/docs/_mdx/(multi-page)/spark.mdx   |   666 +
 .../app/pages/_docs/docs/_mdx/(multi-page)/sql.mdx |     8 +
 .../docs/_mdx/(multi-page)/store-file-tracking.mdx |   139 +
 .../docs/_mdx/(multi-page)/sync-replication.mdx    |    94 +
 .../_mdx/(multi-page)/thrift-filter-language.mdx   |   240 +
 .../pages/_docs/docs/_mdx/(multi-page)/tracing.mdx |    36 +
 .../docs/_mdx/(multi-page)/troubleshooting.mdx     |  1263 +
 .../_docs/docs/_mdx/(multi-page)/unit-testing.mdx  |   347 +
 .../docs/_mdx/(multi-page)/upgrading/index.mdx     |     8 +
 .../docs/_mdx/(multi-page)/upgrading/meta.json     |     4 +
 .../docs/_mdx/(multi-page)/upgrading/paths.mdx     |   426 +
 .../docs/_mdx/(multi-page)/upgrading/rollback.mdx  |   251 +
 .../docs/_mdx/(multi-page)/upgrading/rolling.mdx   |    20 +
 .../_mdx/(multi-page)/upgrading/version-number.mdx |   154 +
 .../pages/_docs/docs/_mdx/(multi-page)/ycsb.mdx    |    10 +
 .../_docs/docs/_mdx/(multi-page)/zookeeper.mdx     |   450 +
 .../pages/_docs/docs/_mdx/single-page/index.mdx    |   512 +
 .../pages/_docs/docs/_mdx/single-page/meta.json    |     8 +
 hbase-website/app/pages/_docs/docs/index.tsx       |   317 +
 .../app/pages/_landing/acid-semantics/content.md   |   125 +
 .../app/pages/_landing/acid-semantics/index.tsx    |    24 +
 .../app/pages/_landing/code-of-conduct/content.md  |    42 +
 .../app/pages/_landing/code-of-conduct/index.tsx   |    24 +
 .../app/pages/_landing/downloads/content.md        |    43 +
 .../app/pages/_landing/downloads/index.tsx         |    24 +
 .../app/pages/_landing/export-control/content.md   |    28 +
 .../app/pages/_landing/export-control/index.tsx    |    24 +
 .../app/pages/_landing/home/community.tsx          |    86 +
 .../app/pages/_landing/home/feature-card.tsx       |    42 +
 hbase-website/app/pages/_landing/home/features.tsx |    57 +
 hbase-website/app/pages/_landing/home/hero.tsx     |    61 +
 hbase-website/app/pages/_landing/home/index.tsx    |    33 +
 .../app/pages/_landing/home/integrations.tsx       |    55 +
 .../app/pages/_landing/home/use-cases.tsx          |    80 +
 .../app/pages/_landing/landing-layout.tsx          |    33 +
 .../app/pages/_landing/mailing-lists/content.md    |    30 +
 .../app/pages/_landing/mailing-lists/index.tsx     |    24 +
 hbase-website/app/pages/_landing/news/events.json  |   535 +
 hbase-website/app/pages/_landing/news/index.tsx    |   100 +
 .../app/pages/_landing/other-resources/index.tsx   |    95 +
 .../pages/_landing/other-resources/resources.json  |    41 +
 .../pages/_landing/powered-by-hbase/companies.json |   248 +
 .../app/pages/_landing/powered-by-hbase/index.tsx  |    85 +
 .../app/pages/_landing/security-model/content.md   |   139 +
 .../app/pages/_landing/security-model/index.tsx    |    24 +
 .../pages/_landing/source-repository/content.md    |    51 +
 .../app/pages/_landing/source-repository/index.tsx |    24 +
 .../app/pages/_landing/sponsors/content.md         |    33 +
 .../app/pages/_landing/sponsors/index.tsx          |    24 +
 .../app/pages/_landing/team/developers.json.d.ts   |    27 +
 hbase-website/app/pages/_landing/team/index.tsx    |    97 +
 hbase-website/app/root.tsx                         |   123 +
 hbase-website/app/routes.ts                        |    43 +
 hbase-website/app/routes/_api/llms-full.ts         |    33 +
 hbase-website/app/routes/_api/search.ts            |    29 +
 hbase-website/app/routes/_docs/docs.tsx            |    36 +
 .../app/routes/_landing/acid-semantics.tsx         |    34 +
 .../app/routes/_landing/code-of-conduct.tsx        |    34 +
 hbase-website/app/routes/_landing/downloads.tsx    |    35 +
 .../app/routes/_landing/export-control.tsx         |    34 +
 hbase-website/app/routes/_landing/home.tsx         |    34 +
 .../app/routes/_landing/mailing-lists.tsx          |    35 +
 hbase-website/app/routes/_landing/news.tsx         |    34 +
 .../app/routes/_landing/other-resources.tsx        |    34 +
 .../app/routes/_landing/powered-by-hbase.tsx       |    35 +
 .../app/routes/_landing/security-model.tsx         |    35 +
 .../app/routes/_landing/source-repository.tsx      |    34 +
 hbase-website/app/routes/_landing/sponsors.tsx     |    35 +
 hbase-website/app/routes/_landing/team.tsx         |    35 +
 hbase-website/app/ui/accordion.tsx                 |    80 +
 hbase-website/app/ui/alert-dialog.tsx              |   151 +
 hbase-website/app/ui/alert.tsx                     |    78 +
 hbase-website/app/ui/aspect-ratio.tsx              |    25 +
 hbase-website/app/ui/avatar.tsx                    |    57 +
 hbase-website/app/ui/badge.tsx                     |    57 +
 hbase-website/app/ui/breadcrumb.tsx                |   120 +
 hbase-website/app/ui/button-group.tsx              |    96 +
 hbase-website/app/ui/button.tsx                    |    81 +
 hbase-website/app/ui/card.tsx                      |    93 +
 hbase-website/app/ui/collapsible.tsx               |    58 +
 hbase-website/app/ui/dialog.tsx                    |   145 +
 hbase-website/app/ui/dropdown-menu.tsx             |   251 +
 hbase-website/app/ui/input.tsx                     |    39 +
 hbase-website/app/ui/item.tsx                      |   190 +
 hbase-website/app/ui/label.tsx                     |    37 +
 hbase-website/app/ui/menubar.tsx                   |   268 +
 hbase-website/app/ui/navigation-menu.tsx           |   179 +
 hbase-website/app/ui/pagination.tsx                |   124 +
 hbase-website/app/ui/popover.tsx                   |    49 +
 hbase-website/app/ui/scroll-area.tsx               |    76 +
 hbase-website/app/ui/separator.tsx                 |    44 +
 hbase-website/app/ui/spinner.tsx                   |    34 +
 hbase-website/app/ui/table.tsx                     |   108 +
 hbase-website/app/ui/tabs.tsx                      |    70 +
 hbase-website/app/ui/textarea.tsx                  |    36 +
 hbase-website/app/ui/tooltip.tsx                   |    73 +
 hbase-website/cli.json                             |    13 +
 hbase-website/e2e-tests/docs.spec.ts               |   267 +
 hbase-website/e2e-tests/export-pdf.spec.ts         |   239 +
 hbase-website/e2e-tests/landing-page.spec.ts       |   165 +
 hbase-website/e2e-tests/theme.spec.ts              |   113 +
 hbase-website/eslint.config.js                     |   181 +
 hbase-website/global.d.ts                          |    26 +
 hbase-website/package-lock.json                    | 16445 ++++++
 hbase-website/package.json                         |   122 +
 hbase-website/playwright.config.ts                 |    65 +
 hbase-website/pom.xml                              |   155 +
 hbase-website/prettier.config.js                   |    25 +
 hbase-website/public/book.html                     | 50358 +++++++++++++++++++
 .../public/docs-images}/1-snapshot.png             |   Bin
 .../public/docs-images}/2-snapshots.png            |   Bin
 hbase-website/public/docs-images/WAL_splitting.png |   Bin 0 -> 48961 bytes
 .../public/docs-images/adding_filters.gif          |   Bin 0 -> 2770341 bytes
 .../public/docs-images}/architecture.gif           |   Bin
 .../public/docs-images}/backup-app-components.png  |   Bin
 .../public/docs-images/backup-cloud-appliance.png  |   Bin 0 -> 24834 bytes
 .../docs-images/backup-dedicated-cluster.png       |   Bin 0 -> 24578 bytes
 .../public/docs-images/backup-intra-cluster.png    |   Bin 0 -> 17348 bytes
 .../public/docs-images}/bc_basic.png               |   Bin
 .../public/docs-images}/bc_config.png              |   Bin
 .../public/docs-images}/bc_l1.png                  |   Bin
 .../public/docs-images}/bc_l2_buckets.png          |   Bin
 .../public/docs-images}/bc_stats.png               |   Bin
 .../public/docs-images}/big_h_logo.png             |   Bin
 .../public/docs-images}/big_h_logo.svg             |     0
 .../docs-images}/bytebuff-allocator-stats.png      |   Bin
 .../docs-images/changing_displayed_fields.gif      |   Bin 0 -> 2620167 bytes
 hbase-website/public/docs-images/changing_mode.gif |   Bin 0 -> 3341347 bytes
 .../docs-images/changing_order_of_fields.gif       |   Bin 0 -> 2879724 bytes
 .../public/docs-images/changing_refresh_delay.gif  |   Bin 0 -> 2292628 bytes
 .../public/docs-images/changing_sort_field.gif     |   Bin 0 -> 3434988 bytes
 .../docs-images}/data_block_diff_encoding.png      |   Bin
 .../public/docs-images}/data_block_no_encoding.png |   Bin
 .../docs-images}/data_block_prefix_encoding.png    |   Bin
 hbase-website/public/docs-images/driling_down.gif  |   Bin 0 -> 4003463 bytes
 .../public/docs-images}/empty-snapshots.png        |   Bin
 .../public/docs-images}/favicon.ico                |   Bin
 .../public/docs-images}/hadoop-logo.jpg            |   Bin
 .../public/docs-images}/hbase_logo.png             |   Bin
 .../public/docs-images}/hbase_logo.svg             |     0
 .../public/docs-images}/hbase_logo_with_orca.png   |   Bin
 .../public/docs-images}/hbase_logo_with_orca.xcf   |   Bin
 .../docs-images}/hbase_logo_with_orca_large.png    |   Bin
 .../docs-images}/hbase_replication_diagram.jpg     |   Bin
 .../public/docs-images}/hbasecon2015.30percent.png |   Bin
 .../docs-images}/hbasecon2016-stack-logo.jpg       |   Bin
 .../public/docs-images}/hbasecon2016-stacked.png   |   Bin
 .../public/docs-images}/hbasecon2017.png           |   Bin
 .../public/docs-images}/hbaseconasia2017.png       |   Bin
 hbase-website/public/docs-images/help_screen.gif   |   Bin 0 -> 930726 bytes
 hbase-website/public/docs-images/hfile.png         |   Bin 0 -> 31680 bytes
 .../public/docs-images}/hfilev2.png                |   Bin
 .../public/docs-images}/jumping-orca_rotated.png   |   Bin
 .../public/docs-images}/jumping-orca_rotated.xcf   |   Bin
 .../jumping-orca_rotated_12percent.png             |   Bin
 .../jumping-orca_rotated_25percent.png             |   Bin
 .../jumping-orca_transparent_rotated.xcf           |   Bin
 .../public/docs-images}/master-snapshot.png        |   Bin
 .../public/docs-images}/offheap-overview.png       |   Bin
 .../public/docs-images}/region_split_process.png   |   Bin
 .../public/docs-images}/region_states.png          |   Bin
 .../public/docs-images}/replication_overview.png   |   Bin
 .../docs-images/scrolling_metric_records.gif       |   Bin 0 -> 6575199 bytes
 .../docs-images/showing_and_clearing_filters.gif   |   Bin 0 -> 1375780 bytes
 .../public/docs-images}/timeline_consistency.png   |   Bin
 hbase-website/public/docs-images/top_screen.gif    |   Bin 0 -> 2146437 bytes
 .../static => hbase-website/public}/favicon.ico    |   Bin
 .../public/fonts/inter-latin-wght-italic.woff2     |   Bin 0 -> 51832 bytes
 .../public/fonts/inter-latin-wght-normal.woff2     |   Bin 0 -> 48256 bytes
 .../public/images/dark-theme-large-logo.svg        |    94 +
 hbase-website/public/images/large-logo.svg         |    89 +
 hbase-website/public/images/logo.svg               |    18 +
 .../public/old-book-static-files/MathJax.js        |    19 +
 .../old-book-static-files/coderay-asciidoctor.css  |    87 +
 .../config/TeX-MML-AM_HTMLorMML.js                 |    19 +
 .../public/old-book-static-files/font-awesome.css  |  2337 +
 .../fonts/fontawesome-webfont.woff2                |   Bin 0 -> 77160 bytes
 .../public/old-book-static-files}/hbase.css        |     0
 hbase-website/react-router.config.ts               |    36 +
 hbase-website/scripts/extract-developers.js        |   107 +
 hbase-website/scripts/extract-hbase-config.js      |   225 +
 hbase-website/scripts/extract-hbase-version.js     |    69 +
 hbase-website/source.config.ts                     |    42 +
 hbase-website/tsconfig.json                        |    27 +
 .../unit-tests/extract-developers.test.js          |   245 +
 .../unit-tests/extract-hbase-config.test.js        |   462 +
 .../unit-tests/extract-hbase-version.test.js       |    53 +
 hbase-website/unit-tests/home.test.tsx             |    89 +
 hbase-website/unit-tests/markdown.test.tsx         |   174 +
 hbase-website/unit-tests/navigation.test.tsx       |   126 +
 hbase-website/unit-tests/setup.ts                  |    25 +
 .../single-page-heading-route-anchors.test.ts      |   134 +
 hbase-website/unit-tests/theme-toggle.test.tsx     |    66 +
 hbase-website/unit-tests/utils.tsx                 |    34 +
 hbase-website/unit-tests/validate-headings.test.ts |   201 +
 .../unit-tests/validate-references.test.ts         |    92 +
 hbase-website/vite.config.ts                       |    49 +
 hbase-website/vitest.config.ts                     |    48 +
 hbase-zookeeper/pom.xml                            |    22 +-
 .../hadoop/hbase/zookeeper/TestHQuorumPeer.java    |    22 +-
 .../hbase/zookeeper/TestInstancePending.java       |    21 +-
 .../hbase/zookeeper/TestMasterAddressTracker.java  |    78 +-
 .../hbase/zookeeper/TestReadOnlyZKClient.java      |    37 +-
 .../hbase/zookeeper/TestRecoverableZooKeeper.java  |    22 +-
 .../hbase/zookeeper/TestZKLeaderManager.java       |    55 +-
 .../hadoop/hbase/zookeeper/TestZKMainServer.java   |    24 +-
 .../apache/hadoop/hbase/zookeeper/TestZKMulti.java |    50 +-
 .../hadoop/hbase/zookeeper/TestZKNodeTracker.java  |    30 +-
 .../apache/hadoop/hbase/zookeeper/TestZKUtil.java  |    29 +-
 .../hadoop/hbase/zookeeper/TestZKUtilNoServer.java |    24 +-
 pom.xml                                            |   681 +-
 src/main/asciidoc/_chapters/amv2.adoc              |   173 -
 .../asciidoc/_chapters/appendix_acl_matrix.adoc    |   181 -
 .../appendix_contributing_to_documentation.adoc    |   441 -
 .../appendix_hbase_incompatibilities.adoc          |   714 -
 .../asciidoc/_chapters/appendix_hfile_format.adoc  |   361 -
 src/main/asciidoc/_chapters/architecture.adoc      |  3627 --
 src/main/asciidoc/_chapters/asf.adoc               |    47 -
 src/main/asciidoc/_chapters/backup_restore.adoc    |   974 -
 .../_chapters/bulk_data_generator_tool.adoc        |   132 -
 src/main/asciidoc/_chapters/case_studies.adoc      |   170 -
 src/main/asciidoc/_chapters/community.adoc         |   191 -
 src/main/asciidoc/_chapters/compression.adoc       |   650 -
 src/main/asciidoc/_chapters/configuration.adoc     |  1558 -
 src/main/asciidoc/_chapters/cp.adoc                |   823 -
 src/main/asciidoc/_chapters/datamodel.adoc         |   635 -
 src/main/asciidoc/_chapters/developer.adoc         |  2819 --
 src/main/asciidoc/_chapters/external_apis.adoc     |  1379 -
 src/main/asciidoc/_chapters/faq.adoc               |   141 -
 src/main/asciidoc/_chapters/getting_started.adoc   |   591 -
 src/main/asciidoc/_chapters/hbase-default.adoc     |  2357 -
 src/main/asciidoc/_chapters/hbase_apis.adoc        |   133 -
 src/main/asciidoc/_chapters/hbase_history.adoc     |    37 -
 src/main/asciidoc/_chapters/hbase_mob.adoc         |   682 -
 src/main/asciidoc/_chapters/hbtop.adoc             |   311 -
 src/main/asciidoc/_chapters/images                 |     1 -
 .../asciidoc/_chapters/inmemory_compaction.adoc    |   109 -
 src/main/asciidoc/_chapters/mapreduce.adoc         |   640 -
 .../asciidoc/_chapters/offheap_read_write.adoc     |   225 -
 src/main/asciidoc/_chapters/ops_mgt.adoc           |  4259 --
 src/main/asciidoc/_chapters/orca.adoc              |    42 -
 src/main/asciidoc/_chapters/other_info.adoc        |    75 -
 src/main/asciidoc/_chapters/performance.adoc       |   933 -
 src/main/asciidoc/_chapters/preface.adoc           |   108 -
 src/main/asciidoc/_chapters/profiler.adoc          |   107 -
 src/main/asciidoc/_chapters/protobuf.adoc          |   222 -
 src/main/asciidoc/_chapters/pv2.adoc               |   163 -
 src/main/asciidoc/_chapters/rpc.adoc               |   221 -
 src/main/asciidoc/_chapters/schema_design.adoc     |  1248 -
 src/main/asciidoc/_chapters/security.adoc          |  2355 -
 src/main/asciidoc/_chapters/shell.adoc             |   487 -
 .../slow_log_responses_from_systable.adoc          |   118 -
 src/main/asciidoc/_chapters/snapshot_scanner.adoc  |   152 -
 src/main/asciidoc/_chapters/spark.adoc             |   699 -
 src/main/asciidoc/_chapters/sql.adoc               |    42 -
 .../asciidoc/_chapters/store_file_tracking.adoc    |   164 -
 src/main/asciidoc/_chapters/sync_replication.adoc  |   125 -
 .../asciidoc/_chapters/thrift_filter_language.adoc |   278 -
 src/main/asciidoc/_chapters/tracing.adoc           |    57 -
 src/main/asciidoc/_chapters/troubleshooting.adoc   |  1592 -
 src/main/asciidoc/_chapters/unit_testing.adoc      |   391 -
 src/main/asciidoc/_chapters/upgrading.adoc         |   882 -
 src/main/asciidoc/_chapters/ycsb.adoc              |    40 -
 src/main/asciidoc/_chapters/zookeeper.adoc         |   517 -
 src/main/asciidoc/book.adoc                        |   109 -
 src/main/asciidoc/images                           |     1 -
 .../xslt/configuration_to_asciidoc_chapter.xsl     |    90 -
 src/site/asciidoc/acid-semantics.adoc              |   118 -
 src/site/asciidoc/bulk-loads.adoc                  |    23 -
 src/site/asciidoc/export_control.adoc              |    44 -
 src/site/asciidoc/index.adoc                       |    75 -
 src/site/asciidoc/metrics.adoc                     |   102 -
 src/site/asciidoc/old_news.adoc                    |   121 -
 src/site/asciidoc/pseudo-distributed.adoc          |    23 -
 src/site/asciidoc/replication.adoc                 |    22 -
 src/site/asciidoc/resources.adoc                   |    27 -
 src/site/asciidoc/sponsors.adoc                    |    36 -
 src/site/custom/project-info-reports.properties    |   283 -
 src/site/resources/.htaccess                       |     8 -
 src/site/resources/book/.empty                     |     1 -
 src/site/resources/css/site.css                    |    41 -
 src/site/resources/doap_Hbase.rdf                  |    57 -
 src/site/resources/images/WAL_splitting.png        |   Bin 38049 -> 0 bytes
 .../resources/images/backup-cloud-appliance.png    |   Bin 30114 -> 0 bytes
 .../resources/images/backup-dedicated-cluster.png  |   Bin 24950 -> 0 bytes
 src/site/resources/images/backup-intra-cluster.png |   Bin 19348 -> 0 bytes
 src/site/resources/images/hfile.png                |   Bin 33661 -> 0 bytes
 src/site/resources/js/searchform.js                |    48 -
 src/site/site.xml                                  |   164 -
 src/site/xdoc/acid-semantics.xml                   |   235 -
 src/site/xdoc/bulk-loads.xml                       |    34 -
 src/site/xdoc/coc.xml                              |    92 -
 src/site/xdoc/documentation-1.4.xml                |    37 -
 src/site/xdoc/documentation-2.3.xml                |    39 -
 src/site/xdoc/documentation-2.4.xml                |    39 -
 src/site/xdoc/documentation-2.5.xml                |    37 -
 src/site/xdoc/documentation-2.6.xml                |    37 -
 src/site/xdoc/downloads.xml                        |   199 -
 src/site/xdoc/export_control.xml                   |    59 -
 src/site/xdoc/index.xml                            |    88 -
 src/site/xdoc/metrics.xml                          |   150 -
 src/site/xdoc/old_news.xml                         |   110 -
 src/site/xdoc/poweredbyhbase.xml                   |   415 -
 src/site/xdoc/pseudo-distributed.xml               |    41 -
 src/site/xdoc/replication.xml                      |    35 -
 src/site/xdoc/resources.xml                        |    45 -
 src/site/xdoc/sponsors.xml                         |    50 -
 src/site/xdoc/supportingprojects.xml               |   163 -
 2865 files changed, 185430 insertions(+), 99791 deletions(-)
 create mode 100644 .github/workflows/yetus-general-check.yml
 create mode 100644 .github/workflows/yetus-jdk17-hadoop3-compile-check.yml
 create mode 100644 .github/workflows/yetus-jdk17-hadoop3-unit-check.yml
 create mode 100644 .idea/vcs.xml
 create mode 100755 dev-support/generate-website/build-hbase-website.sh
 create mode 100644 dev-support/generate-website/generate-hbase-website.Jenkinsfile
 create mode 100644 dev-support/hadoop3-backwards-compatibility-check.Jenkinsfile
 delete mode 100755 dev-support/hbase_nightly_pseudo-distributed-test.sh
 delete mode 100755 dev-support/hbase_nightly_source-artifact.sh
 create mode 100644 dev-support/integration-test/integration-test.Jenkinsfile
 create mode 100755 dev-support/integration-test/patch-hadoop3.sh
 create mode 100755 dev-support/integration-test/pseudo-distributed-test.sh
 create mode 100755 dev-support/integration-test/source-artifact.sh
 delete mode 100644 dev-support/jenkins-scripts/generate-hbase-website.Jenkinsfile
 delete mode 100644 dev-support/jenkins-scripts/generate-hbase-website.sh
 delete mode 100755 dev-support/patch-hadoop3.sh
 create mode 100644 dev-support/yetus_console_to_md.py
 create mode 100644 hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/util/BackupBoundaries.java
 create mode 100644 hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/IncrementalBackupRestoreTestBase.java
 delete mode 100644 hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackup.java
 create mode 100644 hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupRestore.java
 create mode 100644 hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupRestoreHandlesArchivedFiles.java
 create mode 100644 hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupRestoreWithOriginalSplits.java
 create mode 100644 hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackupRestoreWithOriginalSplitsSeperateFs.java
 create mode 100644 hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/ShadedPrefixUtil.java
 create mode 100644 hbase-client/src/main/java/org/apache/hadoop/hbase/keymeta/KeymetaAdminClient.java
 create mode 100644 hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestCompactFromClient.java
 create mode 100644 hbase-client/src/test/java/org/apache/hadoop/hbase/ipc/TestShadedPrefixUtil.java
 create mode 100644 hbase-common/src/main/java/org/apache/hadoop/hbase/io/crypto/ManagedKeyData.java
 create mode 100644 hbase-common/src/main/java/org/apache/hadoop/hbase/keymeta/KeymetaAdmin.java
 create mode 100644 hbase-common/src/main/java/org/apache/hadoop/hbase/util/FastStringPool.java
 create mode 100644 hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseParameterizedInvocationContext.java
 create mode 100644 hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseParameterizedParameterResolver.java
 create mode 100644 hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseParameterizedTemplateProvider.java
 create mode 100644 hbase-common/src/test/java/org/apache/hadoop/hbase/HBaseParameterizedTestTemplate.java
 create mode 100644 hbase-common/src/test/java/org/apache/hadoop/hbase/TableNameTestExtension.java
 create mode 100644 hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestFastStringPool.java
 create mode 100644 hbase-diagnostics/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLoadBalancerPerformanceEvaluation.java
 create mode 100644 hbase-examples/src/main/python/requirements.txt
 create mode 100644 hbase-examples/src/main/resources/hbase-site.xml
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportExportBase.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/ConsecutiveExportsTestBase.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/ExportFileSystemStateTestBase.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/ExportFileSystemStateWithMergeOrSplitRegionTestBase.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/ExportSnapshotMiscTestBase.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/ExportSnapshotRetryTestBase.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/ExportSnapshotTestBase.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/ExportSnapshotTestHelpers.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/ExportWithChecksumTestBase.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestConsecutiveExports.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestConsecutiveExportsWithTmpDir.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportFileSystemState.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportFileSystemStateWithMergeOrSplitRegion.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportFileSystemStateWithMergeOrSplitRegionTmpDir.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportFileSystemStateWithTmpDir.java
 delete mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshot.java
 delete mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshotAdjunct.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshotMisc.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshotMiscWithTmpDir.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshotRetry.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshotRetryWithTmpDir.java
 delete mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshotWithTemporaryDirectory.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportWithChecksum.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportWithChecksumWithTmpDir.java
 delete mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestMobExportSnapshot.java
 delete mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestMobSecureExportSnapshot.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestSecureConsecutiveExports.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestSecureExportFileSystemState.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestSecureExportFileSystemStateWithMergeOrSplitRegion.java
 delete mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestSecureExportSnapshot.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestSecureExportSnapshotMisc.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestSecureExportSnapshotRetry.java
 create mode 100644 hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/snapshot/TestSecureExportWithChecksum.java
 create mode 100644 hbase-protocol-shaded/src/main/protobuf/server/ManagedKeys.proto
 create mode 100644 hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/MultiRowResourceTestBase.java
 create mode 100644 hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/SchemaResourceTestBase.java
 delete mode 100644 hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestMultiRowResource.java
 create mode 100644 hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestMultiRowResourceCsrfDisabled.java
 create mode 100644 hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestMultiRowResourceCsrfEnabled.java
 delete mode 100644 hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java
 create mode 100644 hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResourceCsrfDisabled.java
 create mode 100644 hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResourceCsrfEnabled.java
 delete mode 100644 hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/tool/CanaryStatusTmpl.jamon
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/ClientMetaCoprocessor.java
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/ClientMetaCoprocessorEnvironment.java
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/ClientMetaCoprocessorHost.java
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/ClientMetaObserver.java
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/ObserverRpcCallContext.java
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/ObserverRpcCallContextImpl.java
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/keymeta/KeyManagementService.java
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/keymeta/KeymetaAdminImpl.java
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/keymeta/KeymetaTableAccessor.java
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/keymeta/ManagedKeyDataCache.java
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/keymeta/SystemKeyAccessor.java
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/keymeta/SystemKeyCache.java
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionInTransitionTracker.java
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/RowKeyDateTieringValueProvider.java
 create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/util/CanaryStatusUtil.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/ConnectionExtension.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/MiniClusterExtension.java
 delete mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.java
 delete mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithBasicPolicy.java
 delete mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.java
 delete mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/TestGetAtomicity.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/TestMixedAtomicity.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/TestMobGetAtomicity.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/TestMobMixedAtomicity.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/TestMobScanAtomicity.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/TestScanAtomicity.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/BasicReadWriteWithDifferentConnectionRegistriesTestBase.java
 delete mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSide3TestBase.java
 delete mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideBase.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideScanExcpetionTestBase.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideTest1.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideTest2.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideTest3.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideTest4.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideTest5.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideTestBase.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideTestCheckAndMutate.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideTestFilterAcrossMultipleRegions.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideTestHTableExistsMethodMultipleRegionsMultipleGets.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideTestHTableExistsMethodMultipleRegionsSingleGet.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideTestMultiRowMutation.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideTestPutThenGetWithMultipleThreads.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/FromClientSideTestReverseScan.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/SnapshotCloneIndependenceTestBase.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/SnapshotFromClientTestBase.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/SnapshotTemporaryDirectoryTestBase.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestClientDataStructureMisc.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestConnectionReconnect.java
 delete mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide1.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide1WithCoprocessor.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide2.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide2WithCoprocessor.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3WithCoprocessor.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide4WithCoprocessor.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide5WithCoprocessor.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideCheckAndMutate.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideCheckAndMutateWithCoprocessor.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideFilterAcrossMultipleRegions.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideFilterAcrossMultipleRegionsWithCoprocessor.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideHTableExistsMethodMultipleRegionsMultipleGets.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideHTableExistsMethodMultipleRegionsMultipleGetsWithCoprocessor.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideHTableExistsMethodMultipleRegionsSingleGet.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideHTableExistsMethodMultipleRegionsSingleGetWithCoprocessor.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideMultiRowMutation.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideMultiRowMutationWithCoprocessor.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSidePutThenGetWithMultipleThreads.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSidePutThenGetWithMultipleThreadsWithCoprocessor.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideReverseScan.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideReverseScanWithCoprocessor.java
 delete mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.java
 delete mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor4.java
 delete mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor5.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestSecureBasicReadWriteWithDifferentConnectionRegistries.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClientMetaCoprocessor.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/filter/TestFilterHintForRejectedRow.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/filter/TestFilterListHintDelegation.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/http/TestDebugDumpRedaction.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCacheEmptyPersistence.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/AbstractTestRpcServer.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/TestRpcConnectionHeader.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/TestRpcExecutor.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/master/AbstractTestMasterRegionMutation.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWALFencing.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancerWithCacheAwareLoadBalancerAsInternal.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestReopenTableRegionsIntegration.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestReopenTableRegionsProcedureSpecificRegions.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/mob/TestExpiredMobFileCleanerChore.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/mob/TestMobFileCleanerChore.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionWrapperTableDescriptorHash.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestStoreFileScanner.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestTableDescriptorHashComputation.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestTagsReverseScan.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/compactions/TestRowKeyDateTieringValueProvider.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestPeerProcedureHandlerImpl.java
 delete mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/security/visibility/TestVisibilityLabels.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/security/visibility/VisibilityLabelsTestBase.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/tool/BulkLoadHFilesSplitRecoveryTestBase.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/tool/BulkLoadHFilesTestBase.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/tool/SecureBulkLoadHFilesSplitRecoveryTest.java
 delete mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/tool/TestCanaryStatusServlet.java
 delete mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/tool/TestSecureBulkLoadHFilesSplitRecovery.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestCanaryStatusUtil.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestFromClientSide1WoUnsafe.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestFromClientSide2WoUnsafe.java
 create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestServerHttpUtils.java
 create mode 100644 hbase-shell/src/main/ruby/shell/commands/reopen_regions.rb
 create mode 100644 hbase-shell/src/main/ruby/shell/commands/rpc_throttle_enabled.rb
 create mode 100644 hbase-shell/src/test/ruby/hbase/reopen_regions_test_cluster.rb
 create mode 100644 hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift/TestThriftHttpServerBase.java
 create mode 100644 hbase-website/.dockerignore
 create mode 100644 hbase-website/.gitignore
 create mode 100644 hbase-website/Dockerfile
 create mode 100644 hbase-website/README.md
 create mode 100644 hbase-website/app/app.css
 create mode 100644 hbase-website/app/components/docs/layout/docs/client.tsx
 create mode 100644 hbase-website/app/components/docs/layout/docs/index.tsx
 create mode 100644 hbase-website/app/components/docs/layout/docs/page/client.tsx
 create mode 100644 hbase-website/app/components/docs/layout/docs/page/index.tsx
 create mode 100644 hbase-website/app/components/docs/layout/docs/sidebar.tsx
 create mode 100644 hbase-website/app/components/docs/layout/language-toggle.tsx
 create mode 100644 hbase-website/app/components/docs/layout/link-item.tsx
 create mode 100644 hbase-website/app/components/docs/layout/search-toggle.tsx
 create mode 100644 hbase-website/app/components/docs/layout/shared.tsx
 create mode 100644 hbase-website/app/components/docs/layout/sidebar/base.tsx
 create mode 100644 hbase-website/app/components/docs/layout/sidebar/link-item.tsx
 create mode 100644 hbase-website/app/components/docs/layout/sidebar/page-tree.tsx
 create mode 100644 hbase-website/app/components/docs/layout/sidebar/tabs/dropdown.tsx
 create mode 100644 hbase-website/app/components/docs/layout/sidebar/tabs/index.tsx
 create mode 100644 hbase-website/app/components/docs/layout/theme-toggle.tsx
 create mode 100644 hbase-website/app/components/docs/search/create-db.ts
 create mode 100644 hbase-website/app/components/docs/search/create-from-source.ts
 create mode 100644 hbase-website/app/components/docs/search/docs-search.tsx
 create mode 100644 hbase-website/app/components/docs/search/static.ts
 create mode 100644 hbase-website/app/components/docs/search/use-docs-search.ts
 create mode 100644 hbase-website/app/components/docs/search/utils.ts
 create mode 100644 hbase-website/app/components/docs/toc/clerk.tsx
 create mode 100644 hbase-website/app/components/docs/toc/default.tsx
 create mode 100644 hbase-website/app/components/docs/toc/index.tsx
 create mode 100644 hbase-website/app/components/getting-started.tsx
 create mode 100644 hbase-website/app/components/link.tsx
 create mode 100644 hbase-website/app/components/links.ts
 create mode 100644 hbase-website/app/components/mdx-components.tsx
 create mode 100644 hbase-website/app/components/site-footer.tsx
 create mode 100644 hbase-website/app/components/site-navbar.tsx
 create mode 100644 hbase-website/app/components/theme-toggle.tsx
 create mode 100644 hbase-website/app/lib/export-pdf/export-pdf-types.ts
 create mode 100644 hbase-website/app/lib/source.ts
 create mode 100644 hbase-website/app/lib/theme-provider.tsx
 create mode 100644 hbase-website/app/lib/urls.ts
 create mode 100644 hbase-website/app/lib/utils.ts
 create mode 100644 hbase-website/app/pages/_docs/docs-layout.tsx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/acl-matrix.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/amv2.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/architecture/bulk-loading.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/architecture/catalog-tables.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/architecture/client-request-filters.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/architecture/client.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/architecture/hbase-mob.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/architecture/hdfs.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/architecture/index.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/architecture/master.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/architecture/meta.json
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/architecture/overview.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/architecture/regions.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/architecture/regionserver.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/architecture/snapshot-scanner.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/architecture/timeline-consistent-reads.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/asf.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/backup-restore/additional-topics.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/backup-restore/administration.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/backup-restore/commands.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/backup-restore/index.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/backup-restore/meta.json
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/backup-restore/overview.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/announcing.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/building.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/developer-guidelines.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/generating-documentation.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/getting-involved.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/ides.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/index.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/meta.json
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/releasing.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/repositories.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/tests.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/updating-landing.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/voting.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/bulk-data-generator-tool.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/case-studies.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/community.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/compression.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/configuration/basic-prerequisites.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/configuration/confirm.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/configuration/default.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/configuration/dynamic.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/configuration/example.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/configuration/hbase-run-models.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/configuration/important.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/configuration/index.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/configuration/meta.json
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/contributing-to-documentation.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/cp.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/datamodel.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/external-apis.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/faq.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/getting-started.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/hbase-apis.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/hbase-history.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/hbase-incompatibilities.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/hbtop.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/hfile-format.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/index.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/inmemory-compaction.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/mapreduce.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/meta.json
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/offheap-read-write.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/operational-management/backup-and-snapshots.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/operational-management/cluster-replication.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/operational-management/index.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/operational-management/meta.json
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/operational-management/metrics-and-monitoring.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/operational-management/node.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/operational-management/region-and-capacity.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/operational-management/running-multiple-workloads-on-a-single-cluster.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/operational-management/table-rename.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/operational-management/tools.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/orca.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/other-info.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/performance.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/profiler.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/protobuf.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/pv2.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/regionserver-sizing.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/rpc.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/schema-design.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/security/client-access.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/security/data-access.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/security/example.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/security/hdfs-and-zookeeper-access.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/security/index.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/security/meta.json
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/security/tls.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/security/user-access.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/security/web-ui.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/shell.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/spark.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/sql.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/store-file-tracking.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/sync-replication.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/thrift-filter-language.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/tracing.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/troubleshooting.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/unit-testing.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/upgrading/index.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/upgrading/meta.json
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/upgrading/paths.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/upgrading/rollback.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/upgrading/rolling.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/upgrading/version-number.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/ycsb.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/zookeeper.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/single-page/index.mdx
 create mode 100644 hbase-website/app/pages/_docs/docs/_mdx/single-page/meta.json
 create mode 100644 hbase-website/app/pages/_docs/docs/index.tsx
 create mode 100644 hbase-website/app/pages/_landing/acid-semantics/content.md
 create mode 100644 hbase-website/app/pages/_landing/acid-semantics/index.tsx
 create mode 100644 hbase-website/app/pages/_landing/code-of-conduct/content.md
 create mode 100644 hbase-website/app/pages/_landing/code-of-conduct/index.tsx
 create mode 100644 hbase-website/app/pages/_landing/downloads/content.md
 create mode 100644 hbase-website/app/pages/_landing/downloads/index.tsx
 create mode 100644 hbase-website/app/pages/_landing/export-control/content.md
 create mode 100644 hbase-website/app/pages/_landing/export-control/index.tsx
 create mode 100644 hbase-website/app/pages/_landing/home/community.tsx
 create mode 100644 hbase-website/app/pages/_landing/home/feature-card.tsx
 create mode 100644 hbase-website/app/pages/_landing/home/features.tsx
 create mode 100644 hbase-website/app/pages/_landing/home/hero.tsx
 create mode 100644 hbase-website/app/pages/_landing/home/index.tsx
 create mode 100644 hbase-website/app/pages/_landing/home/integrations.tsx
 create mode 100644 hbase-website/app/pages/_landing/home/use-cases.tsx
 create mode 100644 hbase-website/app/pages/_landing/landing-layout.tsx
 create mode 100644 hbase-website/app/pages/_landing/mailing-lists/content.md
 create mode 100644 hbase-website/app/pages/_landing/mailing-lists/index.tsx
 create mode 100644 hbase-website/app/pages/_landing/news/events.json
 create mode 100644 hbase-website/app/pages/_landing/news/index.tsx
 create mode 100644 hbase-website/app/pages/_landing/other-resources/index.tsx
 create mode 100644 hbase-website/app/pages/_landing/other-resources/resources.json
 create mode 100644 hbase-website/app/pages/_landing/powered-by-hbase/companies.json
 create mode 100644 hbase-website/app/pages/_landing/powered-by-hbase/index.tsx
 create mode 100644 hbase-website/app/pages/_landing/security-model/content.md
 create mode 100644 hbase-website/app/pages/_landing/security-model/index.tsx
 create mode 100644 hbase-website/app/pages/_landing/source-repository/content.md
 create mode 100644 hbase-website/app/pages/_landing/source-repository/index.tsx
 create mode 100644 hbase-website/app/pages/_landing/sponsors/content.md
 create mode 100644 hbase-website/app/pages/_landing/sponsors/index.tsx
 create mode 100644 hbase-website/app/pages/_landing/team/developers.json.d.ts
 create mode 100644 hbase-website/app/pages/_landing/team/index.tsx
 create mode 100644 hbase-website/app/root.tsx
 create mode 100644 hbase-website/app/routes.ts
 create mode 100644 hbase-website/app/routes/_api/llms-full.ts
 create mode 100644 hbase-website/app/routes/_api/search.ts
 create mode 100644 hbase-website/app/routes/_docs/docs.tsx
 create mode 100644 hbase-website/app/routes/_landing/acid-semantics.tsx
 create mode 100644 hbase-website/app/routes/_landing/code-of-conduct.tsx
 create mode 100644 hbase-website/app/routes/_landing/downloads.tsx
 create mode 100644 hbase-website/app/routes/_landing/export-control.tsx
 create mode 100644 hbase-website/app/routes/_landing/home.tsx
 create mode 100644 hbase-website/app/routes/_landing/mailing-lists.tsx
 create mode 100644 hbase-website/app/routes/_landing/news.tsx
 create mode 100644 hbase-website/app/routes/_landing/other-resources.tsx
 create mode 100644 hbase-website/app/routes/_landing/powered-by-hbase.tsx
 create mode 100644 hbase-website/app/routes/_landing/security-model.tsx
 create mode 100644 hbase-website/app/routes/_landing/source-repository.tsx
 create mode 100644 hbase-website/app/routes/_landing/sponsors.tsx
 create mode 100644 hbase-website/app/routes/_landing/team.tsx
 create mode 100644 hbase-website/app/ui/accordion.tsx
 create mode 100644 hbase-website/app/ui/alert-dialog.tsx
 create mode 100644 hbase-website/app/ui/alert.tsx
 create mode 100644 hbase-website/app/ui/aspect-ratio.tsx
 create mode 100644 hbase-website/app/ui/avatar.tsx
 create mode 100644 hbase-website/app/ui/badge.tsx
 create mode 100644 hbase-website/app/ui/breadcrumb.tsx
 create mode 100644 hbase-website/app/ui/button-group.tsx
 create mode 100644 hbase-website/app/ui/button.tsx
 create mode 100644 hbase-website/app/ui/card.tsx
 create mode 100644 hbase-website/app/ui/collapsible.tsx
 create mode 100644 hbase-website/app/ui/dialog.tsx
 create mode 100644 hbase-website/app/ui/dropdown-menu.tsx
 create mode 100644 hbase-website/app/ui/input.tsx
 create mode 100644 hbase-website/app/ui/item.tsx
 create mode 100644 hbase-website/app/ui/label.tsx
 create mode 100644 hbase-website/app/ui/menubar.tsx
 create mode 100644 hbase-website/app/ui/navigation-menu.tsx
 create mode 100644 hbase-website/app/ui/pagination.tsx
 create mode 100644 hbase-website/app/ui/popover.tsx
 create mode 100644 hbase-website/app/ui/scroll-area.tsx
 create mode 100644 hbase-website/app/ui/separator.tsx
 create mode 100644 hbase-website/app/ui/spinner.tsx
 create mode 100644 hbase-website/app/ui/table.tsx
 create mode 100644 hbase-website/app/ui/tabs.tsx
 create mode 100644 hbase-website/app/ui/textarea.tsx
 create mode 100644 hbase-website/app/ui/tooltip.tsx
 create mode 100644 hbase-website/cli.json
 create mode 100644 hbase-website/e2e-tests/docs.spec.ts
 create mode 100644 hbase-website/e2e-tests/export-pdf.spec.ts
 create mode 100644 hbase-website/e2e-tests/landing-page.spec.ts
 create mode 100644 hbase-website/e2e-tests/theme.spec.ts
 create mode 100644 hbase-website/eslint.config.js
 create mode 100644 hbase-website/global.d.ts
 create mode 100644 hbase-website/package-lock.json
 create mode 100644 hbase-website/package.json
 create mode 100644 hbase-website/playwright.config.ts
 create mode 100644 hbase-website/pom.xml
 create mode 100644 hbase-website/prettier.config.js
 create mode 100644 hbase-website/public/book.html
 rename {src/site/resources/images => hbase-website/public/docs-images}/1-snapshot.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/2-snapshots.png (100%)
 create mode 100644 hbase-website/public/docs-images/WAL_splitting.png
 create mode 100644 hbase-website/public/docs-images/adding_filters.gif
 rename {src/site/resources/images => hbase-website/public/docs-images}/architecture.gif (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/backup-app-components.png (100%)
 create mode 100644 hbase-website/public/docs-images/backup-cloud-appliance.png
 create mode 100644 hbase-website/public/docs-images/backup-dedicated-cluster.png
 create mode 100644 hbase-website/public/docs-images/backup-intra-cluster.png
 rename {src/site/resources/images => hbase-website/public/docs-images}/bc_basic.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/bc_config.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/bc_l1.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/bc_l2_buckets.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/bc_stats.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/big_h_logo.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/big_h_logo.svg (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/bytebuff-allocator-stats.png (100%)
 create mode 100644 hbase-website/public/docs-images/changing_displayed_fields.gif
 create mode 100644 hbase-website/public/docs-images/changing_mode.gif
 create mode 100644 hbase-website/public/docs-images/changing_order_of_fields.gif
 create mode 100644 hbase-website/public/docs-images/changing_refresh_delay.gif
 create mode 100644 hbase-website/public/docs-images/changing_sort_field.gif
 rename {src/site/resources/images => hbase-website/public/docs-images}/data_block_diff_encoding.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/data_block_no_encoding.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/data_block_prefix_encoding.png (100%)
 create mode 100644 hbase-website/public/docs-images/driling_down.gif
 rename {src/site/resources/images => hbase-website/public/docs-images}/empty-snapshots.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/favicon.ico (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/hadoop-logo.jpg (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/hbase_logo.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/hbase_logo.svg (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/hbase_logo_with_orca.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/hbase_logo_with_orca.xcf (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/hbase_logo_with_orca_large.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/hbase_replication_diagram.jpg (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/hbasecon2015.30percent.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/hbasecon2016-stack-logo.jpg (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/hbasecon2016-stacked.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/hbasecon2017.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/hbaseconasia2017.png (100%)
 create mode 100644 hbase-website/public/docs-images/help_screen.gif
 create mode 100644 hbase-website/public/docs-images/hfile.png
 rename {src/site/resources/images => hbase-website/public/docs-images}/hfilev2.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/jumping-orca_rotated.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/jumping-orca_rotated.xcf (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/jumping-orca_rotated_12percent.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/jumping-orca_rotated_25percent.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/jumping-orca_transparent_rotated.xcf (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/master-snapshot.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/offheap-overview.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/region_split_process.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/region_states.png (100%)
 rename {src/site/resources/images => hbase-website/public/docs-images}/replication_overview.png (100%)
 create mode 100644 hbase-website/public/docs-images/scrolling_metric_records.gif
 create mode 100644 hbase-website/public/docs-images/showing_and_clearing_filters.gif
 rename {src/site/resources/images => hbase-website/public/docs-images}/timeline_consistency.png (100%)
 create mode 100644 hbase-website/public/docs-images/top_screen.gif
 copy {hbase-server/src/main/resources/hbase-webapps/static => hbase-website/public}/favicon.ico (100%)
 create mode 100644 hbase-website/public/fonts/inter-latin-wght-italic.woff2
 create mode 100644 hbase-website/public/fonts/inter-latin-wght-normal.woff2
 create mode 100644 hbase-website/public/images/dark-theme-large-logo.svg
 create mode 100644 hbase-website/public/images/large-logo.svg
 create mode 100644 hbase-website/public/images/logo.svg
 create mode 100644 hbase-website/public/old-book-static-files/MathJax.js
 create mode 100644 hbase-website/public/old-book-static-files/coderay-asciidoctor.css
 create mode 100644 hbase-website/public/old-book-static-files/config/TeX-MML-AM_HTMLorMML.js
 create mode 100644 hbase-website/public/old-book-static-files/font-awesome.css
 create mode 100644 hbase-website/public/old-book-static-files/fonts/fontawesome-webfont.woff2
 rename {src/main/asciidoc => hbase-website/public/old-book-static-files}/hbase.css (100%)
 create mode 100644 hbase-website/react-router.config.ts
 create mode 100644 hbase-website/scripts/extract-developers.js
 create mode 100755 hbase-website/scripts/extract-hbase-config.js
 create mode 100644 hbase-website/scripts/extract-hbase-version.js
 create mode 100644 hbase-website/source.config.ts
 create mode 100644 hbase-website/tsconfig.json
 create mode 100644 hbase-website/unit-tests/extract-developers.test.js
 create mode 100644 hbase-website/unit-tests/extract-hbase-config.test.js
 create mode 100644 hbase-website/unit-tests/extract-hbase-version.test.js
 create mode 100644 hbase-website/unit-tests/home.test.tsx
 create mode 100644 hbase-website/unit-tests/markdown.test.tsx
 create mode 100644 hbase-website/unit-tests/navigation.test.tsx
 create mode 100644 hbase-website/unit-tests/setup.ts
 create mode 100644 hbase-website/unit-tests/single-page-heading-route-anchors.test.ts
 create mode 100644 hbase-website/unit-tests/theme-toggle.test.tsx
 create mode 100644 hbase-website/unit-tests/utils.tsx
 create mode 100644 hbase-website/unit-tests/validate-headings.test.ts
 create mode 100644 hbase-website/unit-tests/validate-references.test.ts
 create mode 100644 hbase-website/vite.config.ts
 create mode 100644 hbase-website/vitest.config.ts
 delete mode 100644 src/main/asciidoc/_chapters/amv2.adoc
 delete mode 100644 src/main/asciidoc/_chapters/appendix_acl_matrix.adoc
 delete mode 100644 src/main/asciidoc/_chapters/appendix_contributing_to_documentation.adoc
 delete mode 100644 src/main/asciidoc/_chapters/appendix_hbase_incompatibilities.adoc
 delete mode 100644 src/main/asciidoc/_chapters/appendix_hfile_format.adoc
 delete mode 100644 src/main/asciidoc/_chapters/architecture.adoc
 delete mode 100644 src/main/asciidoc/_chapters/asf.adoc
 delete mode 100644 src/main/asciidoc/_chapters/backup_restore.adoc
 delete mode 100644 src/main/asciidoc/_chapters/bulk_data_generator_tool.adoc
 delete mode 100644 src/main/asciidoc/_chapters/case_studies.adoc
 delete mode 100644 src/main/asciidoc/_chapters/community.adoc
 delete mode 100644 src/main/asciidoc/_chapters/compression.adoc
 delete mode 100644 src/main/asciidoc/_chapters/configuration.adoc
 delete mode 100644 src/main/asciidoc/_chapters/cp.adoc
 delete mode 100644 src/main/asciidoc/_chapters/datamodel.adoc
 delete mode 100644 src/main/asciidoc/_chapters/developer.adoc
 delete mode 100644 src/main/asciidoc/_chapters/external_apis.adoc
 delete mode 100644 src/main/asciidoc/_chapters/faq.adoc
 delete mode 100644 src/main/asciidoc/_chapters/getting_started.adoc
 delete mode 100644 src/main/asciidoc/_chapters/hbase-default.adoc
 delete mode 100644 src/main/asciidoc/_chapters/hbase_apis.adoc
 delete mode 100644 src/main/asciidoc/_chapters/hbase_history.adoc
 delete mode 100644 src/main/asciidoc/_chapters/hbase_mob.adoc
 delete mode 100644 src/main/asciidoc/_chapters/hbtop.adoc
 delete mode 120000 src/main/asciidoc/_chapters/images
 delete mode 100644 src/main/asciidoc/_chapters/inmemory_compaction.adoc
 delete mode 100644 src/main/asciidoc/_chapters/mapreduce.adoc
 delete mode 100644 src/main/asciidoc/_chapters/offheap_read_write.adoc
 delete mode 100644 src/main/asciidoc/_chapters/ops_mgt.adoc
 delete mode 100644 src/main/asciidoc/_chapters/orca.adoc
 delete mode 100644 src/main/asciidoc/_chapters/other_info.adoc
 delete mode 100644 src/main/asciidoc/_chapters/performance.adoc
 delete mode 100644 src/main/asciidoc/_chapters/preface.adoc
 delete mode 100644 src/main/asciidoc/_chapters/profiler.adoc
 delete mode 100644 src/main/asciidoc/_chapters/protobuf.adoc
 delete mode 100644 src/main/asciidoc/_chapters/pv2.adoc
 delete mode 100644 src/main/asciidoc/_chapters/rpc.adoc
 delete mode 100644 src/main/asciidoc/_chapters/schema_design.adoc
 delete mode 100644 src/main/asciidoc/_chapters/security.adoc
 delete mode 100644 src/main/asciidoc/_chapters/shell.adoc
 delete mode 100644 src/main/asciidoc/_chapters/slow_log_responses_from_systable.adoc
 delete mode 100644 src/main/asciidoc/_chapters/snapshot_scanner.adoc
 delete mode 100644 src/main/asciidoc/_chapters/spark.adoc
 delete mode 100644 src/main/asciidoc/_chapters/sql.adoc
 delete mode 100644 src/main/asciidoc/_chapters/store_file_tracking.adoc
 delete mode 100644 src/main/asciidoc/_chapters/sync_replication.adoc
 delete mode 100644 src/main/asciidoc/_chapters/thrift_filter_language.adoc
 delete mode 100644 src/main/asciidoc/_chapters/tracing.adoc
 delete mode 100644 src/main/asciidoc/_chapters/troubleshooting.adoc
 delete mode 100644 src/main/asciidoc/_chapters/unit_testing.adoc
 delete mode 100644 src/main/asciidoc/_chapters/upgrading.adoc
 delete mode 100644 src/main/asciidoc/_chapters/ycsb.adoc
 delete mode 100644 src/main/asciidoc/_chapters/zookeeper.adoc
 delete mode 100644 src/main/asciidoc/book.adoc
 delete mode 120000 src/main/asciidoc/images
 delete mode 100644 src/main/xslt/configuration_to_asciidoc_chapter.xsl
 delete mode 100644 src/site/asciidoc/acid-semantics.adoc
 delete mode 100644 src/site/asciidoc/bulk-loads.adoc
 delete mode 100644 src/site/asciidoc/export_control.adoc
 delete mode 100644 src/site/asciidoc/index.adoc
 delete mode 100644 src/site/asciidoc/metrics.adoc
 delete mode 100644 src/site/asciidoc/old_news.adoc
 delete mode 100644 src/site/asciidoc/pseudo-distributed.adoc
 delete mode 100644 src/site/asciidoc/replication.adoc
 delete mode 100644 src/site/asciidoc/resources.adoc
 delete mode 100644 src/site/asciidoc/sponsors.adoc
 delete mode 100644 src/site/custom/project-info-reports.properties
 delete mode 100644 src/site/resources/.htaccess
 delete mode 100644 src/site/resources/book/.empty
 delete mode 100644 src/site/resources/css/site.css
 delete mode 100644 src/site/resources/doap_Hbase.rdf
 delete mode 100644 src/site/resources/images/WAL_splitting.png
 delete mode 100644 src/site/resources/images/backup-cloud-appliance.png
 delete mode 100644 src/site/resources/images/backup-dedicated-cluster.png
 delete mode 100644 src/site/resources/images/backup-intra-cluster.png
 delete mode 100644 src/site/resources/images/hfile.png
 delete mode 100644 src/site/resources/js/searchform.js
 delete mode 100644 src/site/site.xml
 delete mode 100644 src/site/xdoc/acid-semantics.xml
 delete mode 100644 src/site/xdoc/bulk-loads.xml
 delete mode 100644 src/site/xdoc/coc.xml
 delete mode 100644 src/site/xdoc/documentation-1.4.xml
 delete mode 100644 src/site/xdoc/documentation-2.3.xml
 delete mode 100644 src/site/xdoc/documentation-2.4.xml
 delete mode 100644 src/site/xdoc/documentation-2.5.xml
 delete mode 100644 src/site/xdoc/documentation-2.6.xml
 delete mode 100644 src/site/xdoc/downloads.xml
 delete mode 100644 src/site/xdoc/export_control.xml
 delete mode 100644 src/site/xdoc/index.xml
 delete mode 100644 src/site/xdoc/metrics.xml
 delete mode 100644 src/site/xdoc/old_news.xml
 delete mode 100644 src/site/xdoc/poweredbyhbase.xml
 delete mode 100644 src/site/xdoc/pseudo-distributed.xml
 delete mode 100644 src/site/xdoc/replication.xml
 delete mode 100644 src/site/xdoc/resources.xml
 delete mode 100644 src/site/xdoc/sponsors.xml
 delete mode 100644 src/site/xdoc/supportingprojects.xml


(hbase) 02/02: fix logic bug

Posted by cc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

charlesconnell pushed a commit to branch HBASE-29688/varhandle
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit 366f4d90d63d5e948eecdef8171e435900508f5a
Author: Charles Connell <cc...@hubspot.com>
AuthorDate: Fri May 22 15:18:30 2026 -0400

    fix logic bug
---
 .../src/main/java/org/apache/hadoop/hbase/util/ByteBufferUtils.java | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferUtils.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferUtils.java
index d2c3b7cc320..e356b63eb81 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferUtils.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferUtils.java
@@ -918,7 +918,7 @@ public final class ByteBufferUtils {
   }
 
   public static int putInt(ByteBuffer buffer, int index, int val) {
-    BYTE_BUFFER_INT_VIEW_BIG_ENDIAN_VAR_HANDLE.set(buffer, buffer.position(), val);
+    BYTE_BUFFER_INT_VIEW_BIG_ENDIAN_VAR_HANDLE.set(buffer, index, val);
     return index + Integer.BYTES;
   }
 
@@ -961,7 +961,7 @@ public final class ByteBufferUtils {
   }
 
   public static int putShort(ByteBuffer buffer, int index, short val) {
-    BYTE_BUFFER_SHORT_VIEW_BIG_ENDIAN_VAR_HANDLE.set(buffer, buffer.position(), val);
+    BYTE_BUFFER_SHORT_VIEW_BIG_ENDIAN_VAR_HANDLE.set(buffer, index), val);
     return index + Short.BYTES;
   }
 
@@ -984,7 +984,7 @@ public final class ByteBufferUtils {
   }
 
   public static int putLong(ByteBuffer buffer, int index, long val) {
-    BYTE_BUFFER_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.set(buffer, buffer.position(), val);
+    BYTE_BUFFER_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.set(buffer, index, val);
     return index + Long.BYTES;
   }
 


(hbase) 01/02: Remove many uses of Unsafe

Posted by cc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

charlesconnell pushed a commit to branch HBASE-29688/varhandle
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit 11b8b7d65b9fa41e4dfb41ee411072295cfd3fb3
Author: Charles Connell <ch...@charlesconnell.com>
AuthorDate: Mon Oct 27 14:33:28 2025 -0400

    Remove many uses of Unsafe
---
 .../apache/hadoop/hbase/io/ByteBuffAllocator.java  |   8 +-
 .../apache/hadoop/hbase/nio/SingleByteBuff.java    |  35 +-
 .../apache/hadoop/hbase/util/ByteBufferUtils.java  | 545 +++---------
 .../java/org/apache/hadoop/hbase/util/Bytes.java   | 359 ++------
 .../org/apache/hadoop/hbase/util/UnsafeAccess.java | 293 -------
 .../hadoop/hbase/util/ByteBufferUtilsTestBase.java | 930 +++++++++++++++++++++
 .../apache/hadoop/hbase/util/BytesTestBase.java    | 341 ++++++++
 .../hbase/util/TestByteBufferUtilsWoUnsafe.java    |   1 -
 .../hadoop/hbase/util/TestBytesWoUnsafe.java       |  41 -
 .../hbase/util/TestFromClientSide3WoUnsafe.java    |   1 -
 10 files changed, 1460 insertions(+), 1094 deletions(-)

diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/ByteBuffAllocator.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/ByteBuffAllocator.java
index 737d93207cb..2954720ebe7 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/ByteBuffAllocator.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/ByteBuffAllocator.java
@@ -29,7 +29,6 @@ import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.nio.ByteBuff;
 import org.apache.hadoop.hbase.nio.SingleByteBuff;
 import org.apache.hadoop.hbase.util.ReflectionUtils;
-import org.apache.hadoop.hbase.util.UnsafeAccess;
 import org.apache.yetus.audience.InterfaceAudience;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -349,12 +348,7 @@ public class ByteBuffAllocator {
    * Free all direct buffers if allocated, mainly used for testing.
    */
   public void clean() {
-    while (!buffers.isEmpty()) {
-      ByteBuffer b = buffers.poll();
-      if (b.isDirect()) {
-        UnsafeAccess.freeDirectBuffer(b);
-      }
-    }
+    this.buffers.clear();
     this.usedBufCount.set(0);
     this.maxPoolSizeInfoLevelLogged = false;
     this.poolAllocationBytes.reset();
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/nio/SingleByteBuff.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/nio/SingleByteBuff.java
index 320696ada70..b49fdd243ff 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/nio/SingleByteBuff.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/nio/SingleByteBuff.java
@@ -24,10 +24,8 @@ import java.nio.ByteBuffer;
 import java.nio.channels.FileChannel;
 import java.nio.channels.ReadableByteChannel;
 import org.apache.hadoop.hbase.io.ByteBuffAllocator.Recycler;
-import org.apache.hadoop.hbase.unsafe.HBasePlatformDependent;
 import org.apache.hadoop.hbase.util.ByteBufferUtils;
 import org.apache.hadoop.hbase.util.ObjectIntPair;
-import org.apache.hadoop.hbase.util.UnsafeAccess;
 import org.apache.yetus.audience.InterfaceAudience;
 
 /**
@@ -37,16 +35,9 @@ import org.apache.yetus.audience.InterfaceAudience;
 @InterfaceAudience.Private
 public class SingleByteBuff extends ByteBuff {
 
-  private static final boolean UNSAFE_AVAIL = HBasePlatformDependent.isUnsafeAvailable();
-  private static final boolean UNSAFE_UNALIGNED = HBasePlatformDependent.unaligned();
-
   // Underlying BB
   private final ByteBuffer buf;
 
-  // To access primitive values from underlying ByteBuffer using Unsafe
-  private long unsafeOffset;
-  private Object unsafeRef = null;
-
   public SingleByteBuff(ByteBuffer buf) {
     this(NONE, buf);
   }
@@ -58,12 +49,6 @@ public class SingleByteBuff extends ByteBuff {
   SingleByteBuff(RefCnt refCnt, ByteBuffer buf) {
     this.refCnt = refCnt;
     this.buf = buf;
-    if (buf.hasArray()) {
-      this.unsafeOffset = UnsafeAccess.BYTE_ARRAY_BASE_OFFSET + buf.arrayOffset();
-      this.unsafeRef = buf.array();
-    } else {
-      this.unsafeOffset = UnsafeAccess.directBufferAddress(buf);
-    }
   }
 
   @Override
@@ -181,10 +166,7 @@ public class SingleByteBuff extends ByteBuff {
   @Override
   public byte get(int index) {
     checkRefCount();
-    if (UNSAFE_AVAIL) {
-      return UnsafeAccess.toByte(this.unsafeRef, this.unsafeOffset + index);
-    }
-    return this.buf.get(index);
+    return ByteBufferUtils.toByte(buf, index);
   }
 
   @Override
@@ -284,10 +266,7 @@ public class SingleByteBuff extends ByteBuff {
   @Override
   public short getShort(int index) {
     checkRefCount();
-    if (UNSAFE_UNALIGNED) {
-      return UnsafeAccess.toShort(unsafeRef, unsafeOffset + index);
-    }
-    return this.buf.getShort(index);
+    return ByteBufferUtils.toShort(this.buf, index);
   }
 
   @Override
@@ -312,10 +291,7 @@ public class SingleByteBuff extends ByteBuff {
   @Override
   public int getInt(int index) {
     checkRefCount();
-    if (UNSAFE_UNALIGNED) {
-      return UnsafeAccess.toInt(unsafeRef, unsafeOffset + index);
-    }
-    return this.buf.getInt(index);
+    return ByteBufferUtils.toInt(this.buf, index);
   }
 
   @Override
@@ -340,10 +316,7 @@ public class SingleByteBuff extends ByteBuff {
   @Override
   public long getLong(int index) {
     checkRefCount();
-    if (UNSAFE_UNALIGNED) {
-      return UnsafeAccess.toLong(unsafeRef, unsafeOffset + index);
-    }
-    return this.buf.getLong(index);
+    return ByteBufferUtils.toLong(this.buf, index);
   }
 
   @Override
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferUtils.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferUtils.java
index d6b93632340..d2c3b7cc320 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferUtils.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferUtils.java
@@ -24,9 +24,12 @@ import java.io.DataOutput;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.VarHandle;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
 import java.util.Arrays;
 import org.apache.hadoop.hbase.io.ByteBufferWriter;
 import org.apache.hadoop.hbase.io.util.StreamUtils;
@@ -47,7 +50,19 @@ public final class ByteBufferUtils {
   public final static int NEXT_BIT_SHIFT = 7;
   public final static int NEXT_BIT_MASK = 1 << 7;
   final static boolean UNSAFE_AVAIL = HBasePlatformDependent.isUnsafeAvailable();
-  public final static boolean UNSAFE_UNALIGNED = HBasePlatformDependent.unaligned();
+
+  /*
+   * The VarHandles below must be used directly, not via non-static aliases. Non-static usage of a
+   * VarHandle is much slower than static usage.
+   */
+  private static final VarHandle BYTE_BUFFER_SHORT_VIEW_BIG_ENDIAN_VAR_HANDLE =
+    MethodHandles.byteBufferViewVarHandle(short[].class, ByteOrder.BIG_ENDIAN);
+  private static final VarHandle BYTE_BUFFER_INT_VIEW_BIG_ENDIAN_VAR_HANDLE =
+    MethodHandles.byteBufferViewVarHandle(int[].class, ByteOrder.BIG_ENDIAN);
+  private static final VarHandle BYTE_BUFFER_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE =
+    MethodHandles.byteBufferViewVarHandle(long[].class, ByteOrder.BIG_ENDIAN);
+  private static final VarHandle BYTE_ARRAY_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE =
+    MethodHandles.byteArrayViewVarHandle(long[].class, ByteOrder.BIG_ENDIAN);
 
   private ByteBufferUtils() {
   }
@@ -58,28 +73,6 @@ public final class ByteBufferUtils {
     abstract int compareTo(ByteBuffer buf1, int o1, int l1, ByteBuffer buf2, int o2, int l2);
   }
 
-  static abstract class Converter {
-    abstract short toShort(ByteBuffer buffer, int offset);
-
-    abstract int toInt(ByteBuffer buffer);
-
-    abstract int toInt(ByteBuffer buffer, int offset);
-
-    abstract long toLong(ByteBuffer buffer, int offset);
-
-    abstract void putInt(ByteBuffer buffer, int val);
-
-    abstract int putInt(ByteBuffer buffer, int index, int val);
-
-    abstract void putShort(ByteBuffer buffer, short val);
-
-    abstract int putShort(ByteBuffer buffer, int index, short val);
-
-    abstract void putLong(ByteBuffer buffer, long val);
-
-    abstract int putLong(ByteBuffer buffer, int index, long val);
-  }
-
   static abstract class CommonPrefixer {
     abstract int findCommonPrefix(ByteBuffer left, int leftOffset, int leftLength, byte[] right,
       int rightOffset, int rightLength);
@@ -88,349 +81,150 @@ public final class ByteBufferUtils {
       int rightOffset, int rightLength);
   }
 
+  /**
+   * <a href=
+   * "https://github.com/google/guava/blob/v21.0/guava/src/com/google/common/primitives/UnsignedBytes.java#L362">Adapted
+   * from Guava</a>
+   */
   static class ComparerHolder {
-    static final String UNSAFE_COMPARER_NAME = ComparerHolder.class.getName() + "$UnsafeComparer";
-
     static final Comparer BEST_COMPARER = getBestComparer();
 
     static Comparer getBestComparer() {
-      try {
-        Class<? extends Comparer> theClass =
-          Class.forName(UNSAFE_COMPARER_NAME).asSubclass(Comparer.class);
-
-        return theClass.getConstructor().newInstance();
-      } catch (Throwable t) { // ensure we really catch *everything*
-        return PureJavaComparer.INSTANCE;
-      }
+      return VarHandleComparer.INSTANCE;
     }
 
-    static final class PureJavaComparer extends Comparer {
-      static final PureJavaComparer INSTANCE = new PureJavaComparer();
+    static final class VarHandleComparer extends Comparer {
 
-      private PureJavaComparer() {
-      }
+      static final VarHandleComparer INSTANCE = new VarHandleComparer();
+      private static final int STRIDE = Long.BYTES;
 
       @Override
-      public int compareTo(byte[] buf1, int o1, int l1, ByteBuffer buf2, int o2, int l2) {
-        int end1 = o1 + l1;
-        int end2 = o2 + l2;
-        for (int i = o1, j = o2; i < end1 && j < end2; i++, j++) {
-          int a = buf1[i] & 0xFF;
-          int b = buf2.get(j) & 0xFF;
-          if (a != b) {
-            return a - b;
+      int compareTo(byte[] buf1, int o1, int l1, ByteBuffer buf2, int o2, int l2) {
+        final int minLength = Math.min(l1, l2);
+        int strideLimit = minLength & ~(STRIDE - 1);
+        int i;
+
+        for (i = 0; i < strideLimit; i += STRIDE) {
+          // big-endian fetches are faster than little-endian because the bytes don't need to get
+          // reversed
+          long lw = (long) BYTE_ARRAY_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.get(buf1, o1 + i);
+          long rw = (long) BYTE_BUFFER_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.get(buf2, o2 + i);
+          if (lw != rw) {
+            return ((lw + Long.MIN_VALUE) < (rw + Long.MIN_VALUE)) ? -1 : 1;
           }
         }
-        return l1 - l2;
-      }
 
-      @Override
-      public int compareTo(ByteBuffer buf1, int o1, int l1, ByteBuffer buf2, int o2, int l2) {
-        int end1 = o1 + l1;
-        int end2 = o2 + l2;
-        for (int i = o1, j = o2; i < end1 && j < end2; i++, j++) {
-          int a = buf1.get(i) & 0xFF;
-          int b = buf2.get(j) & 0xFF;
-          if (a != b) {
-            return a - b;
+        // The epilogue to cover the last (minLength % stride) elements.
+        for (; i < minLength; i++) {
+          int il = buf1[o1 + i] & 0xFF;
+          int ir = buf2.get(o2 + i) & 0xFF;
+          if (il != ir) {
+            return il - ir;
           }
         }
         return l1 - l2;
       }
-    }
-
-    static final class UnsafeComparer extends Comparer {
-
-      public UnsafeComparer() {
-      }
-
-      static {
-        if (!UNSAFE_UNALIGNED) {
-          throw new Error();
-        }
-      }
-
-      @Override
-      public int compareTo(byte[] buf1, int o1, int l1, ByteBuffer buf2, int o2, int l2) {
-        long offset2Adj;
-        Object refObj2 = null;
-        if (buf2.isDirect()) {
-          offset2Adj = o2 + UnsafeAccess.directBufferAddress(buf2);
-        } else {
-          offset2Adj = o2 + buf2.arrayOffset() + UnsafeAccess.BYTE_ARRAY_BASE_OFFSET;
-          refObj2 = buf2.array();
-        }
-        return compareToUnsafe(buf1, o1 + UnsafeAccess.BYTE_ARRAY_BASE_OFFSET, l1, refObj2,
-          offset2Adj, l2);
-      }
 
       @Override
       public int compareTo(ByteBuffer buf1, int o1, int l1, ByteBuffer buf2, int o2, int l2) {
-        long offset1Adj, offset2Adj;
-        Object refObj1 = null, refObj2 = null;
-        if (buf1.isDirect()) {
-          offset1Adj = o1 + UnsafeAccess.directBufferAddress(buf1);
-        } else {
-          offset1Adj = o1 + buf1.arrayOffset() + UnsafeAccess.BYTE_ARRAY_BASE_OFFSET;
-          refObj1 = buf1.array();
-        }
-        if (buf2.isDirect()) {
-          offset2Adj = o2 + UnsafeAccess.directBufferAddress(buf2);
-        } else {
-          offset2Adj = o2 + buf2.arrayOffset() + UnsafeAccess.BYTE_ARRAY_BASE_OFFSET;
-          refObj2 = buf2.array();
+        final int minLength = Math.min(l1, l2);
+        int strideLimit = minLength & ~(STRIDE - 1);
+        int i;
+
+        for (i = 0; i < strideLimit; i += STRIDE) {
+          // big-endian fetches are faster than little-endian because the bytes don't need to get
+          // reversed
+          long lw = (long) BYTE_BUFFER_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.get(buf1, o1 + i);
+          long rw = (long) BYTE_BUFFER_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.get(buf2, o2 + i);
+          if (lw != rw) {
+            return ((lw + Long.MIN_VALUE) < (rw + Long.MIN_VALUE)) ? -1 : 1;
+          }
         }
-        return compareToUnsafe(refObj1, offset1Adj, l1, refObj2, offset2Adj, l2);
-      }
-    }
-  }
-
-  static class ConverterHolder {
-    static final String UNSAFE_CONVERTER_NAME =
-      ConverterHolder.class.getName() + "$UnsafeConverter";
-    static final Converter BEST_CONVERTER = getBestConverter();
-
-    static Converter getBestConverter() {
-      try {
-        Class<? extends Converter> theClass =
-          Class.forName(UNSAFE_CONVERTER_NAME).asSubclass(Converter.class);
-
-        // yes, UnsafeComparer does implement Comparer<byte[]>
-        return theClass.getConstructor().newInstance();
-      } catch (Throwable t) { // ensure we really catch *everything*
-        return PureJavaConverter.INSTANCE;
-      }
-    }
-
-    static final class PureJavaConverter extends Converter {
-      static final PureJavaConverter INSTANCE = new PureJavaConverter();
-
-      private PureJavaConverter() {
-      }
-
-      @Override
-      short toShort(ByteBuffer buffer, int offset) {
-        return buffer.getShort(offset);
-      }
-
-      @Override
-      int toInt(ByteBuffer buffer) {
-        return buffer.getInt();
-      }
-
-      @Override
-      int toInt(ByteBuffer buffer, int offset) {
-        return buffer.getInt(offset);
-      }
-
-      @Override
-      long toLong(ByteBuffer buffer, int offset) {
-        return buffer.getLong(offset);
-      }
-
-      @Override
-      void putInt(ByteBuffer buffer, int val) {
-        buffer.putInt(val);
-      }
-
-      @Override
-      int putInt(ByteBuffer buffer, int index, int val) {
-        buffer.putInt(index, val);
-        return index + Bytes.SIZEOF_INT;
-      }
 
-      @Override
-      void putShort(ByteBuffer buffer, short val) {
-        buffer.putShort(val);
-      }
-
-      @Override
-      int putShort(ByteBuffer buffer, int index, short val) {
-        buffer.putShort(index, val);
-        return index + Bytes.SIZEOF_SHORT;
-      }
-
-      @Override
-      void putLong(ByteBuffer buffer, long val) {
-        buffer.putLong(val);
-      }
-
-      @Override
-      int putLong(ByteBuffer buffer, int index, long val) {
-        buffer.putLong(index, val);
-        return index + Bytes.SIZEOF_LONG;
-      }
-    }
-
-    static final class UnsafeConverter extends Converter {
-
-      public UnsafeConverter() {
-      }
-
-      static {
-        if (!UNSAFE_UNALIGNED) {
-          throw new Error();
+        // The epilogue to cover the last (minLength % stride) elements.
+        for (; i < minLength; i++) {
+          int il = buf1.get(o1 + i) & 0xFF;
+          int ir = buf2.get(o2 + i) & 0xFF;
+          if (il != ir) {
+            return il - ir;
+          }
         }
-      }
-
-      @Override
-      short toShort(ByteBuffer buffer, int offset) {
-        return UnsafeAccess.toShort(buffer, offset);
-      }
-
-      @Override
-      int toInt(ByteBuffer buffer) {
-        int i = UnsafeAccess.toInt(buffer, buffer.position());
-        buffer.position(buffer.position() + Bytes.SIZEOF_INT);
-        return i;
-      }
-
-      @Override
-      int toInt(ByteBuffer buffer, int offset) {
-        return UnsafeAccess.toInt(buffer, offset);
-      }
-
-      @Override
-      long toLong(ByteBuffer buffer, int offset) {
-        return UnsafeAccess.toLong(buffer, offset);
-      }
-
-      @Override
-      void putInt(ByteBuffer buffer, int val) {
-        int newPos = UnsafeAccess.putInt(buffer, buffer.position(), val);
-        buffer.position(newPos);
-      }
-
-      @Override
-      int putInt(ByteBuffer buffer, int index, int val) {
-        return UnsafeAccess.putInt(buffer, index, val);
-      }
-
-      @Override
-      void putShort(ByteBuffer buffer, short val) {
-        int newPos = UnsafeAccess.putShort(buffer, buffer.position(), val);
-        buffer.position(newPos);
-      }
-
-      @Override
-      int putShort(ByteBuffer buffer, int index, short val) {
-        return UnsafeAccess.putShort(buffer, index, val);
-      }
-
-      @Override
-      void putLong(ByteBuffer buffer, long val) {
-        int newPos = UnsafeAccess.putLong(buffer, buffer.position(), val);
-        buffer.position(newPos);
-      }
-
-      @Override
-      int putLong(ByteBuffer buffer, int index, long val) {
-        return UnsafeAccess.putLong(buffer, index, val);
+        return l1 - l2;
       }
     }
   }
 
   static class CommonPrefixerHolder {
-    static final String UNSAFE_COMMON_PREFIXER_NAME =
-      CommonPrefixerHolder.class.getName() + "$UnsafeCommonPrefixer";
-
     static final CommonPrefixer BEST_COMMON_PREFIXER = getBestCommonPrefixer();
 
     static CommonPrefixer getBestCommonPrefixer() {
-      try {
-        Class<? extends CommonPrefixer> theClass =
-          Class.forName(UNSAFE_COMMON_PREFIXER_NAME).asSubclass(CommonPrefixer.class);
-
-        return theClass.getConstructor().newInstance();
-      } catch (Throwable t) { // ensure we really catch *everything*
-        return PureJavaCommonPrefixer.INSTANCE;
-      }
+      return VarHandleCommonPrefixer.INSTANCE;
     }
 
-    static final class PureJavaCommonPrefixer extends CommonPrefixer {
-      static final PureJavaCommonPrefixer INSTANCE = new PureJavaCommonPrefixer();
+    static final class VarHandleCommonPrefixer extends CommonPrefixer {
 
-      private PureJavaCommonPrefixer() {
-      }
+      static final VarHandleCommonPrefixer INSTANCE = new VarHandleCommonPrefixer();
 
-      @Override
-      public int findCommonPrefix(ByteBuffer left, int leftOffset, int leftLength, byte[] right,
-        int rightOffset, int rightLength) {
-        int length = Math.min(leftLength, rightLength);
-        int result = 0;
-
-        while (
-          result < length
-            && ByteBufferUtils.toByte(left, leftOffset + result) == right[rightOffset + result]
-        ) {
-          result++;
-        }
-
-        return result;
-      }
+      private static final int STRIDE = Long.BYTES;
 
       @Override
-      int findCommonPrefix(ByteBuffer left, int leftOffset, int leftLength, ByteBuffer right,
+      public int findCommonPrefix(ByteBuffer left, int leftOffset, int leftLength, byte[] right,
         int rightOffset, int rightLength) {
-        int length = Math.min(leftLength, rightLength);
-        int result = 0;
-
-        while (
-          result < length && ByteBufferUtils.toByte(left, leftOffset + result)
-              == ByteBufferUtils.toByte(right, rightOffset + result)
-        ) {
-          result++;
+        final int minLength = Math.min(leftLength, rightLength);
+        int strideLimit = minLength & ~(STRIDE - 1);
+        int i;
+
+        for (i = 0; i < strideLimit; i += STRIDE) {
+          // big-endian fetches are faster than little-endian because the bytes don't need to get
+          // reversed
+          long lw = (long) BYTE_BUFFER_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.get(left, leftOffset + i);
+          long rw = (long) BYTE_ARRAY_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.get(right, rightOffset + i);
+
+          if (lw != rw) {
+            return i + (Long.numberOfLeadingZeros(lw ^ rw) / Bytes.SIZEOF_LONG);
+          }
         }
 
-        return result;
-      }
-    }
-
-    static final class UnsafeCommonPrefixer extends CommonPrefixer {
-
-      static {
-        if (!UNSAFE_UNALIGNED) {
-          throw new Error();
+        // The epilogue to cover the last (minLength % stride) elements.
+        for (; i < minLength; i++) {
+          byte il = left.get(leftOffset + i);
+          byte ir = right[rightOffset + i];
+          if (il != ir) {
+            return i;
+          }
         }
-      }
 
-      public UnsafeCommonPrefixer() {
-      }
-
-      @Override
-      public int findCommonPrefix(ByteBuffer left, int leftOffset, int leftLength, byte[] right,
-        int rightOffset, int rightLength) {
-        long offset1Adj;
-        Object refObj1 = null;
-        if (left.isDirect()) {
-          offset1Adj = leftOffset + UnsafeAccess.directBufferAddress(left);
-        } else {
-          offset1Adj = leftOffset + left.arrayOffset() + UnsafeAccess.BYTE_ARRAY_BASE_OFFSET;
-          refObj1 = left.array();
-        }
-        return findCommonPrefixUnsafe(refObj1, offset1Adj, leftLength, right,
-          rightOffset + UnsafeAccess.BYTE_ARRAY_BASE_OFFSET, rightLength);
+        return i;
       }
 
       @Override
       public int findCommonPrefix(ByteBuffer left, int leftOffset, int leftLength, ByteBuffer right,
         int rightOffset, int rightLength) {
-        long offset1Adj, offset2Adj;
-        Object refObj1 = null, refObj2 = null;
-        if (left.isDirect()) {
-          offset1Adj = leftOffset + UnsafeAccess.directBufferAddress(left);
-        } else {
-          offset1Adj = leftOffset + left.arrayOffset() + UnsafeAccess.BYTE_ARRAY_BASE_OFFSET;
-          refObj1 = left.array();
+        final int minLength = Math.min(leftLength, rightLength);
+        int strideLimit = minLength & ~(STRIDE - 1);
+        int i;
+
+        for (i = 0; i < strideLimit; i += STRIDE) {
+          // big-endian fetches are faster than little-endian because the bytes don't need to get
+          // reversed
+          long lw = (long) BYTE_BUFFER_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.get(left, leftOffset + i);
+          long rw = (long) BYTE_BUFFER_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.get(right, rightOffset + i);
+
+          if (lw != rw) {
+            return i + (Long.numberOfLeadingZeros(lw ^ rw) / Bytes.SIZEOF_LONG);
+          }
         }
-        if (right.isDirect()) {
-          offset2Adj = rightOffset + UnsafeAccess.directBufferAddress(right);
-        } else {
-          offset2Adj = rightOffset + right.arrayOffset() + UnsafeAccess.BYTE_ARRAY_BASE_OFFSET;
-          refObj2 = right.array();
+
+        // The epilogue to cover the last (minLength % stride) elements.
+        for (; i < minLength; i++) {
+          byte il = left.get(leftOffset + i);
+          byte ir = right.get(rightOffset + i);
+          if (il != ir) {
+            return i;
+          }
         }
-        return findCommonPrefixUnsafe(refObj1, offset1Adj, leftLength, refObj2, offset2Adj,
-          rightLength);
+
+        return i;
       }
     }
   }
@@ -580,11 +374,9 @@ public final class ByteBufferUtils {
   }
 
   public static byte toByte(ByteBuffer buffer, int offset) {
-    if (UNSAFE_AVAIL) {
-      return UnsafeAccess.toByte(buffer, offset);
-    } else {
-      return buffer.get(offset);
-    }
+    // For some reason there is no way to get one byte from a ByteBuffer via a VarHandle, so
+    // for now just do things the slow way.
+    return buffer.get(offset);
   }
 
   /**
@@ -1055,85 +847,6 @@ public final class ByteBufferUtils {
     return compareTo(buf2, o2, l2, buf1, o1, l1) * -1;
   }
 
-  static int compareToUnsafe(Object obj1, long o1, int l1, Object obj2, long o2, int l2) {
-    final int stride = 8;
-    final int minLength = Math.min(l1, l2);
-    int strideLimit = minLength & ~(stride - 1);
-    int i;
-
-    /*
-     * Compare 8 bytes at a time. Benchmarking shows comparing 8 bytes at a time is no slower than
-     * comparing 4 bytes at a time even on 32-bit. On the other hand, it is substantially faster on
-     * 64-bit.
-     */
-    for (i = 0; i < strideLimit; i += stride) {
-      long lw = HBasePlatformDependent.getLong(obj1, o1 + (long) i);
-      long rw = HBasePlatformDependent.getLong(obj2, o2 + (long) i);
-      if (lw != rw) {
-        if (!UnsafeAccess.LITTLE_ENDIAN) {
-          return ((lw + Long.MIN_VALUE) < (rw + Long.MIN_VALUE)) ? -1 : 1;
-        }
-
-        /*
-         * We want to compare only the first index where left[index] != right[index]. This
-         * corresponds to the least significant nonzero byte in lw ^ rw, since lw and rw are
-         * little-endian. Long.numberOfTrailingZeros(diff) tells us the least significant nonzero
-         * bit, and zeroing out the first three bits of L.nTZ gives us the shift to get that least
-         * significant nonzero byte. This comparison logic is based on UnsignedBytes from guava v21
-         */
-        int n = Long.numberOfTrailingZeros(lw ^ rw) & ~0x7;
-        return ((int) ((lw >>> n) & 0xFF)) - ((int) ((rw >>> n) & 0xFF));
-      }
-    }
-
-    // The epilogue to cover the last (minLength % stride) elements.
-    for (; i < minLength; i++) {
-      int il = (HBasePlatformDependent.getByte(obj1, o1 + i) & 0xFF);
-      int ir = (HBasePlatformDependent.getByte(obj2, o2 + i) & 0xFF);
-      if (il != ir) {
-        return il - ir;
-      }
-    }
-    return l1 - l2;
-  }
-
-  static int findCommonPrefixUnsafe(Object left, long leftOffset, int leftLength, Object right,
-    long rightOffset, int rightLength) {
-    final int stride = 8;
-    final int minLength = Math.min(leftLength, rightLength);
-    int strideLimit = minLength & ~(stride - 1);
-    int result = 0;
-    int i;
-
-    for (i = 0; i < strideLimit; i += stride) {
-      long lw = HBasePlatformDependent.getLong(left, leftOffset + (long) i);
-      long rw = HBasePlatformDependent.getLong(right, rightOffset + (long) i);
-
-      if (lw != rw) {
-        if (!UnsafeAccess.LITTLE_ENDIAN) {
-          return result + (Long.numberOfLeadingZeros(lw ^ rw) / Bytes.SIZEOF_LONG);
-        } else {
-          return result + (Long.numberOfTrailingZeros(lw ^ rw) / Bytes.SIZEOF_LONG);
-        }
-      } else {
-        result += Bytes.SIZEOF_LONG;
-      }
-    }
-
-    // The epilogue to cover the last (minLength % stride) elements.
-    for (; i < minLength; i++) {
-      byte il = HBasePlatformDependent.getByte(left, leftOffset + i);
-      byte ir = HBasePlatformDependent.getByte(right, rightOffset + i);
-      if (il != ir) {
-        return result;
-      } else {
-        result++;
-      }
-    }
-
-    return result;
-  }
-
   /**
    * Reads a short value at the given buffer's offset.
    * @param buffer input byte buffer to read
@@ -1141,14 +854,16 @@ public final class ByteBufferUtils {
    * @return short value at offset
    */
   public static short toShort(ByteBuffer buffer, int offset) {
-    return ConverterHolder.BEST_CONVERTER.toShort(buffer, offset);
+    return (short) BYTE_BUFFER_SHORT_VIEW_BIG_ENDIAN_VAR_HANDLE.get(buffer, offset);
   }
 
   /**
    * Reads an int value at the given buffer's current position. Also advances the buffer's position
    */
   public static int toInt(ByteBuffer buffer) {
-    return ConverterHolder.BEST_CONVERTER.toInt(buffer);
+    int i = (int) BYTE_BUFFER_INT_VIEW_BIG_ENDIAN_VAR_HANDLE.get(buffer, buffer.position());
+    buffer.position(buffer.position() + Integer.BYTES);
+    return i;
   }
 
   /**
@@ -1158,7 +873,7 @@ public final class ByteBufferUtils {
    * @return int value at offset
    */
   public static int toInt(ByteBuffer buffer, int offset) {
-    return ConverterHolder.BEST_CONVERTER.toInt(buffer, offset);
+    return (int) BYTE_BUFFER_INT_VIEW_BIG_ENDIAN_VAR_HANDLE.get(buffer, offset);
   }
 
   /**
@@ -1188,7 +903,7 @@ public final class ByteBufferUtils {
    * @return long value at offset
    */
   public static long toLong(ByteBuffer buffer, int offset) {
-    return ConverterHolder.BEST_CONVERTER.toLong(buffer, offset);
+    return (long) BYTE_BUFFER_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.get(buffer, offset);
   }
 
   /**
@@ -1198,11 +913,13 @@ public final class ByteBufferUtils {
    * @param val    int to write out
    */
   public static void putInt(ByteBuffer buffer, int val) {
-    ConverterHolder.BEST_CONVERTER.putInt(buffer, val);
+    BYTE_BUFFER_INT_VIEW_BIG_ENDIAN_VAR_HANDLE.set(buffer, buffer.position(), val);
+    buffer.position(buffer.position() + Integer.BYTES);
   }
 
   public static int putInt(ByteBuffer buffer, int index, int val) {
-    return ConverterHolder.BEST_CONVERTER.putInt(buffer, index, val);
+    BYTE_BUFFER_INT_VIEW_BIG_ENDIAN_VAR_HANDLE.set(buffer, buffer.position(), val);
+    return index + Integer.BYTES;
   }
 
   /**
@@ -1239,11 +956,13 @@ public final class ByteBufferUtils {
    * @param val    short to write out
    */
   public static void putShort(ByteBuffer buffer, short val) {
-    ConverterHolder.BEST_CONVERTER.putShort(buffer, val);
+    BYTE_BUFFER_SHORT_VIEW_BIG_ENDIAN_VAR_HANDLE.set(buffer, buffer.position(), val);
+    buffer.position(buffer.position() + Short.BYTES);
   }
 
   public static int putShort(ByteBuffer buffer, int index, short val) {
-    return ConverterHolder.BEST_CONVERTER.putShort(buffer, index, val);
+    BYTE_BUFFER_SHORT_VIEW_BIG_ENDIAN_VAR_HANDLE.set(buffer, buffer.position(), val);
+    return index + Short.BYTES;
   }
 
   public static int putAsShort(ByteBuffer buf, int index, int val) {
@@ -1260,11 +979,13 @@ public final class ByteBufferUtils {
    * @param val    long to write out
    */
   public static void putLong(ByteBuffer buffer, long val) {
-    ConverterHolder.BEST_CONVERTER.putLong(buffer, val);
+    BYTE_BUFFER_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.set(buffer, buffer.position(), val);
+    buffer.position(buffer.position() + Long.BYTES);
   }
 
   public static int putLong(ByteBuffer buffer, int index, long val) {
-    return ConverterHolder.BEST_CONVERTER.putLong(buffer, index, val);
+    BYTE_BUFFER_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.set(buffer, buffer.position(), val);
+    return index + Long.BYTES;
   }
 
   /**
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Bytes.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Bytes.java
index 96b3dbd4a8a..9ccf6447dcf 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Bytes.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Bytes.java
@@ -25,9 +25,12 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.VarHandle;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
 import java.nio.charset.StandardCharsets;
 import java.security.SecureRandom;
 import java.util.ArrayList;
@@ -40,7 +43,6 @@ import java.util.List;
 import java.util.Random;
 import org.apache.hadoop.hbase.Cell;
 import org.apache.hadoop.hbase.CellComparator;
-import org.apache.hadoop.hbase.unsafe.HBasePlatformDependent;
 import org.apache.hadoop.io.RawComparator;
 import org.apache.hadoop.io.WritableComparator;
 import org.apache.hadoop.io.WritableUtils;
@@ -124,7 +126,18 @@ public class Bytes implements Comparable<Bytes> {
   // SizeOf which uses java.lang.instrument says 24 bytes. (3 longs?)
   public static final int ESTIMATED_HEAP_TAX = 16;
 
-  static final boolean UNSAFE_UNALIGNED = HBasePlatformDependent.unaligned();
+  /*
+   * The VarHandles below must be used directly, not via non-static aliases. Non-static usage of a
+   * VarHandle is much slower than static usage. Native byte order access is used when we are
+   * getting longs for equality comparison and don't care about numeric value. Endian-specific is
+   * used when the numeric value matters.
+   */
+  private static final VarHandle BYTE_ARRAY_SHORT_VIEW_BIG_ENDIAN_VAR_HANDLE =
+    MethodHandles.byteArrayViewVarHandle(short[].class, ByteOrder.BIG_ENDIAN);
+  private static final VarHandle BYTE_ARRAY_INT_VIEW_BIG_ENDIAN_VAR_HANDLE =
+    MethodHandles.byteArrayViewVarHandle(int[].class, ByteOrder.BIG_ENDIAN);
+  private static final VarHandle BYTE_ARRAY_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE =
+    MethodHandles.byteArrayViewVarHandle(long[].class, ByteOrder.BIG_ENDIAN);
 
   /**
    * Returns length of the byte array, returning 0 if the array is null. Useful for calculating
@@ -718,7 +731,7 @@ public class Bytes implements Comparable<Bytes> {
     if (length != SIZEOF_LONG || offset + length > bytes.length) {
       throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_LONG);
     }
-    return ConverterHolder.BEST_CONVERTER.toLong(bytes, offset, length);
+    return (long) BYTE_ARRAY_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.get(bytes, offset);
   }
 
   private static IllegalArgumentException explainWrongLengthOrOffset(final byte[] bytes,
@@ -747,7 +760,8 @@ public class Bytes implements Comparable<Bytes> {
       throw new IllegalArgumentException("Not enough room to put a long at" + " offset " + offset
         + " in a " + bytes.length + " byte array");
     }
-    return ConverterHolder.BEST_CONVERTER.putLong(bytes, offset, val);
+    BYTE_ARRAY_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.set(bytes, offset, val);
+    return offset + Long.BYTES;
   }
 
   /**
@@ -867,7 +881,7 @@ public class Bytes implements Comparable<Bytes> {
     if (length != SIZEOF_INT || offset + length > bytes.length) {
       throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_INT);
     }
-    return ConverterHolder.BEST_CONVERTER.toInt(bytes, offset, length);
+    return (int) BYTE_ARRAY_INT_VIEW_BIG_ENDIAN_VAR_HANDLE.get(bytes, offset);
   }
 
   /**
@@ -906,7 +920,8 @@ public class Bytes implements Comparable<Bytes> {
       throw new IllegalArgumentException("Not enough room to put an int at" + " offset " + offset
         + " in a " + bytes.length + " byte array");
     }
-    return ConverterHolder.BEST_CONVERTER.putInt(bytes, offset, val);
+    BYTE_ARRAY_INT_VIEW_BIG_ENDIAN_VAR_HANDLE.set(bytes, offset, val);
+    return offset + Integer.BYTES;
   }
 
   /**
@@ -954,7 +969,7 @@ public class Bytes implements Comparable<Bytes> {
     if (length != SIZEOF_SHORT || offset + length > bytes.length) {
       throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_SHORT);
     }
-    return ConverterHolder.BEST_CONVERTER.toShort(bytes, offset, length);
+    return (short) BYTE_ARRAY_SHORT_VIEW_BIG_ENDIAN_VAR_HANDLE.get(bytes, offset);
   }
 
   /**
@@ -982,7 +997,8 @@ public class Bytes implements Comparable<Bytes> {
       throw new IllegalArgumentException("Not enough room to put a short at" + " offset " + offset
         + " in a " + bytes.length + " byte array");
     }
-    return ConverterHolder.BEST_CONVERTER.putShort(bytes, offset, val);
+    BYTE_ARRAY_SHORT_VIEW_BIG_ENDIAN_VAR_HANDLE.set(bytes, offset, val);
+    return offset + Short.BYTES;
   }
 
   /**
@@ -1164,236 +1180,27 @@ public class Bytes implements Comparable<Bytes> {
     int compareTo(T buffer1, int offset1, int length1, T buffer2, int offset2, int length2);
   }
 
-  static abstract class Converter {
-    abstract long toLong(byte[] bytes, int offset, int length);
-
-    abstract int putLong(byte[] bytes, int offset, long val);
-
-    abstract int toInt(byte[] bytes, int offset, final int length);
-
-    abstract int putInt(byte[] bytes, int offset, int val);
-
-    abstract short toShort(byte[] bytes, int offset, final int length);
-
-    abstract int putShort(byte[] bytes, int offset, short val);
-
-  }
-
   static abstract class CommonPrefixer {
     abstract int findCommonPrefix(byte[] left, int leftOffset, int leftLength, byte[] right,
       int rightOffset, int rightLength);
   }
 
-  static Comparer<byte[]> lexicographicalComparerJavaImpl() {
-    return LexicographicalComparerHolder.PureJavaComparer.INSTANCE;
-  }
-
-  static class ConverterHolder {
-    static final String UNSAFE_CONVERTER_NAME =
-      ConverterHolder.class.getName() + "$UnsafeConverter";
-
-    static final Converter BEST_CONVERTER = getBestConverter();
-
-    /**
-     * Returns the Unsafe-using Converter, or falls back to the pure-Java implementation if unable
-     * to do so.
-     */
-    static Converter getBestConverter() {
-      try {
-        Class<?> theClass = Class.forName(UNSAFE_CONVERTER_NAME);
-
-        // yes, UnsafeComparer does implement Comparer<byte[]>
-        @SuppressWarnings("unchecked")
-        Converter converter = (Converter) theClass.getConstructor().newInstance();
-        return converter;
-      } catch (Throwable t) { // ensure we really catch *everything*
-        return PureJavaConverter.INSTANCE;
-      }
-    }
-
-    protected static final class PureJavaConverter extends Converter {
-      static final PureJavaConverter INSTANCE = new PureJavaConverter();
-
-      private PureJavaConverter() {
-      }
-
-      @Override
-      long toLong(byte[] bytes, int offset, int length) {
-        long l = 0;
-        for (int i = offset; i < offset + length; i++) {
-          l <<= 8;
-          l ^= bytes[i] & 0xFF;
-        }
-        return l;
-      }
-
-      @Override
-      int putLong(byte[] bytes, int offset, long val) {
-        for (int i = offset + 7; i > offset; i--) {
-          bytes[i] = (byte) val;
-          val >>>= 8;
-        }
-        bytes[offset] = (byte) val;
-        return offset + SIZEOF_LONG;
-      }
-
-      @Override
-      int toInt(byte[] bytes, int offset, int length) {
-        int n = 0;
-        for (int i = offset; i < (offset + length); i++) {
-          n <<= 8;
-          n ^= bytes[i] & 0xFF;
-        }
-        return n;
-      }
-
-      @Override
-      int putInt(byte[] bytes, int offset, int val) {
-        for (int i = offset + 3; i > offset; i--) {
-          bytes[i] = (byte) val;
-          val >>>= 8;
-        }
-        bytes[offset] = (byte) val;
-        return offset + SIZEOF_INT;
-      }
-
-      @Override
-      short toShort(byte[] bytes, int offset, int length) {
-        short n = 0;
-        n = (short) ((n ^ bytes[offset]) & 0xFF);
-        n = (short) (n << 8);
-        n ^= (short) (bytes[offset + 1] & 0xFF);
-        return n;
-      }
-
-      @Override
-      int putShort(byte[] bytes, int offset, short val) {
-        bytes[offset + 1] = (byte) val;
-        val >>= 8;
-        bytes[offset] = (byte) val;
-        return offset + SIZEOF_SHORT;
-      }
-    }
-
-    protected static final class UnsafeConverter extends Converter {
-
-      public UnsafeConverter() {
-      }
-
-      static {
-        if (!UNSAFE_UNALIGNED) {
-          // It doesn't matter what we throw;
-          // it's swallowed in getBestComparer().
-          throw new Error();
-        }
-
-        // sanity check - this should never fail
-        if (HBasePlatformDependent.arrayIndexScale(byte[].class) != 1) {
-          throw new AssertionError();
-        }
-      }
-
-      @Override
-      long toLong(byte[] bytes, int offset, int length) {
-        return UnsafeAccess.toLong(bytes, offset);
-      }
-
-      @Override
-      int putLong(byte[] bytes, int offset, long val) {
-        return UnsafeAccess.putLong(bytes, offset, val);
-      }
-
-      @Override
-      int toInt(byte[] bytes, int offset, int length) {
-        return UnsafeAccess.toInt(bytes, offset);
-      }
-
-      @Override
-      int putInt(byte[] bytes, int offset, int val) {
-        return UnsafeAccess.putInt(bytes, offset, val);
-      }
-
-      @Override
-      short toShort(byte[] bytes, int offset, int length) {
-        return UnsafeAccess.toShort(bytes, offset);
-      }
-
-      @Override
-      int putShort(byte[] bytes, int offset, short val) {
-        return UnsafeAccess.putShort(bytes, offset, val);
-      }
-    }
-  }
-
   /**
-   * Provides a lexicographical comparer implementation; either a Java implementation or a faster
-   * implementation based on {@code Unsafe}.
-   * <p>
-   * Uses reflection to gracefully fall back to the Java implementation if {@code Unsafe} isn't
-   * available.
+   * <a href=
+   * "https://github.com/google/guava/blob/v21.0/guava/src/com/google/common/primitives/UnsignedBytes.java#L362">Adapted
+   * from Guava</a>
    */
   static class LexicographicalComparerHolder {
-    static final String UNSAFE_COMPARER_NAME =
-      LexicographicalComparerHolder.class.getName() + "$UnsafeComparer";
-
     static final Comparer<byte[]> BEST_COMPARER = getBestComparer();
 
-    /**
-     * Returns the Unsafe-using Comparer, or falls back to the pure-Java implementation if unable to
-     * do so.
-     */
     static Comparer<byte[]> getBestComparer() {
-      try {
-        Class<?> theClass = Class.forName(UNSAFE_COMPARER_NAME);
-
-        // yes, UnsafeComparer does implement Comparer<byte[]>
-        @SuppressWarnings("unchecked")
-        Comparer<byte[]> comparer = (Comparer<byte[]>) theClass.getEnumConstants()[0];
-        return comparer;
-      } catch (Throwable t) { // ensure we really catch *everything*
-        return lexicographicalComparerJavaImpl();
-      }
-    }
-
-    enum PureJavaComparer implements Comparer<byte[]> {
-      INSTANCE;
-
-      @Override
-      public int compareTo(byte[] buffer1, int offset1, int length1, byte[] buffer2, int offset2,
-        int length2) {
-        // Short circuit equal case
-        if (buffer1 == buffer2 && offset1 == offset2 && length1 == length2) {
-          return 0;
-        }
-        // Bring WritableComparator code local
-        int end1 = offset1 + length1;
-        int end2 = offset2 + length2;
-        for (int i = offset1, j = offset2; i < end1 && j < end2; i++, j++) {
-          int a = (buffer1[i] & 0xff);
-          int b = (buffer2[j] & 0xff);
-          if (a != b) {
-            return a - b;
-          }
-        }
-        return length1 - length2;
-      }
+      return VarHandleComparer.INSTANCE;
     }
 
-    enum UnsafeComparer implements Comparer<byte[]> {
+    enum VarHandleComparer implements Comparer<byte[]> {
       INSTANCE;
 
-      static {
-        if (!UNSAFE_UNALIGNED) {
-          // It doesn't matter what we throw;
-          // it's swallowed in getBestComparer().
-          throw new Error();
-        }
-
-        // sanity check - this should never fail
-        if (HBasePlatformDependent.arrayIndexScale(byte[].class) != 1) {
-          throw new AssertionError();
-        }
-      }
+      private static final int STRIDE = Long.BYTES;
 
       /**
        * Lexicographically compare two arrays.
@@ -1410,38 +1217,24 @@ public class Bytes implements Comparable<Bytes> {
         int length2) {
 
         // Short circuit equal case
-        if (buffer1 == buffer2 && offset1 == offset2 && length1 == length2) {
+        if ((buffer1 == buffer2) && (offset1 == offset2) && (length1 == length2)) {
           return 0;
         }
-        final int stride = 8;
         final int minLength = Math.min(length1, length2);
-        int strideLimit = minLength & ~(stride - 1);
-        final long offset1Adj = offset1 + UnsafeAccess.BYTE_ARRAY_BASE_OFFSET;
-        final long offset2Adj = offset2 + UnsafeAccess.BYTE_ARRAY_BASE_OFFSET;
+        int strideLimit = minLength & ~(STRIDE - 1);
         int i;
 
         /*
          * Compare 8 bytes at a time. Benchmarking on x86 shows a stride of 8 bytes is no slower
          * than 4 bytes even on 32-bit. On the other hand, it is substantially faster on 64-bit.
          */
-        for (i = 0; i < strideLimit; i += stride) {
-          long lw = HBasePlatformDependent.getLong(buffer1, offset1Adj + i);
-          long rw = HBasePlatformDependent.getLong(buffer2, offset2Adj + i);
+        for (i = 0; i < strideLimit; i += STRIDE) {
+          // big-endian fetches are faster than little-endian because the bytes don't need to get
+          // reversed
+          long lw = (long) BYTE_ARRAY_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.get(buffer1, offset1 + i);
+          long rw = (long) BYTE_ARRAY_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.get(buffer2, offset2 + i);
           if (lw != rw) {
-            if (!UnsafeAccess.LITTLE_ENDIAN) {
-              return ((lw + Long.MIN_VALUE) < (rw + Long.MIN_VALUE)) ? -1 : 1;
-            }
-
-            /*
-             * We want to compare only the first index where left[index] != right[index]. This
-             * corresponds to the least significant nonzero byte in lw ^ rw, since lw and rw are
-             * little-endian. Long.numberOfTrailingZeros(diff) tells us the least significant
-             * nonzero bit, and zeroing out the first three bits of L.nTZ gives us the shift to get
-             * that least significant nonzero byte. This comparison logic is based on UnsignedBytes
-             * comparator from guava v21
-             */
-            int n = Long.numberOfTrailingZeros(lw ^ rw) & ~0x7;
-            return ((int) ((lw >>> n) & 0xFF)) - ((int) ((rw >>> n) & 0xFF));
+            return ((lw + Long.MIN_VALUE) < (rw + Long.MIN_VALUE)) ? -1 : 1;
           }
         }
 
@@ -1459,79 +1252,31 @@ public class Bytes implements Comparable<Bytes> {
   }
 
   static class CommonPrefixerHolder {
-    static final String UNSAFE_COMMON_PREFIXER_NAME =
-      CommonPrefixerHolder.class.getName() + "$UnsafeCommonPrefixer";
-
     static final CommonPrefixer BEST_COMMON_PREFIXER = getBestCommonPrefixer();
 
     static CommonPrefixer getBestCommonPrefixer() {
-      try {
-        Class<? extends CommonPrefixer> theClass =
-          Class.forName(UNSAFE_COMMON_PREFIXER_NAME).asSubclass(CommonPrefixer.class);
-
-        return theClass.getConstructor().newInstance();
-      } catch (Throwable t) { // ensure we really catch *everything*
-        return CommonPrefixerHolder.PureJavaCommonPrefixer.INSTANCE;
-      }
+      return VarHandleCommonPrefixer.INSTANCE;
     }
 
-    static final class PureJavaCommonPrefixer extends CommonPrefixer {
-      static final PureJavaCommonPrefixer INSTANCE = new PureJavaCommonPrefixer();
+    static final class VarHandleCommonPrefixer extends CommonPrefixer {
+      static final VarHandleCommonPrefixer INSTANCE = new VarHandleCommonPrefixer();
 
-      private PureJavaCommonPrefixer() {
-      }
+      private static final int STRIDE = Long.BYTES;
 
       @Override
       public int findCommonPrefix(byte[] left, int leftOffset, int leftLength, byte[] right,
         int rightOffset, int rightLength) {
-        int length = Math.min(leftLength, rightLength);
-        int result = 0;
-
-        while (result < length && left[leftOffset + result] == right[rightOffset + result]) {
-          result++;
-        }
-        return result;
-      }
-    }
-
-    static final class UnsafeCommonPrefixer extends CommonPrefixer {
-
-      static {
-        if (!UNSAFE_UNALIGNED) {
-          throw new Error();
-        }
-
-        // sanity check - this should never fail
-        if (HBasePlatformDependent.arrayIndexScale(byte[].class) != 1) {
-          throw new AssertionError();
-        }
-      }
-
-      public UnsafeCommonPrefixer() {
-      }
-
-      @Override
-      public int findCommonPrefix(byte[] left, int leftOffset, int leftLength, byte[] right,
-        int rightOffset, int rightLength) {
-        final int stride = 8;
         final int minLength = Math.min(leftLength, rightLength);
-        int strideLimit = minLength & ~(stride - 1);
-        final long leftOffsetAdj = leftOffset + UnsafeAccess.BYTE_ARRAY_BASE_OFFSET;
-        final long rightOffsetAdj = rightOffset + UnsafeAccess.BYTE_ARRAY_BASE_OFFSET;
-        int result = 0;
+        int strideLimit = minLength & ~(STRIDE - 1);
         int i;
 
-        for (i = 0; i < strideLimit; i += stride) {
-          long lw = HBasePlatformDependent.getLong(left, leftOffsetAdj + i);
-          long rw = HBasePlatformDependent.getLong(right, rightOffsetAdj + i);
+        for (i = 0; i < strideLimit; i += STRIDE) {
+          // big-endian fetches are faster than little-endian because the bytes don't need to get
+          // reversed
+          long lw = (long) BYTE_ARRAY_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.get(left, leftOffset + i);
+          long rw = (long) BYTE_ARRAY_LONG_VIEW_BIG_ENDIAN_VAR_HANDLE.get(right, rightOffset + i);
           if (lw != rw) {
-            if (!UnsafeAccess.LITTLE_ENDIAN) {
-              return result + (Long.numberOfLeadingZeros(lw ^ rw) / Bytes.SIZEOF_LONG);
-            } else {
-              return result + (Long.numberOfTrailingZeros(lw ^ rw) / Bytes.SIZEOF_LONG);
-            }
-          } else {
-            result += Bytes.SIZEOF_LONG;
+            return i + (Long.numberOfLeadingZeros(lw ^ rw) / Bytes.SIZEOF_LONG);
           }
         }
 
@@ -1540,13 +1285,11 @@ public class Bytes implements Comparable<Bytes> {
           int il = (left[leftOffset + i]);
           int ir = (right[rightOffset + i]);
           if (il != ir) {
-            return result;
-          } else {
-            result++;
+            return i;
           }
         }
 
-        return result;
+        return i;
       }
     }
   }
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/UnsafeAccess.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/UnsafeAccess.java
index 3aa8a6ec123..fb46058210d 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/UnsafeAccess.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/UnsafeAccess.java
@@ -18,7 +18,6 @@
 package org.apache.hadoop.hbase.util;
 
 import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
 import org.apache.hadoop.hbase.unsafe.HBasePlatformDependent;
 import org.apache.yetus.audience.InterfaceAudience;
 import org.apache.yetus.audience.InterfaceStability;
@@ -32,9 +31,6 @@ public final class UnsafeAccess {
   /** The offset to the first element in a byte array. */
   public static final long BYTE_ARRAY_BASE_OFFSET;
 
-  public static final boolean LITTLE_ENDIAN =
-    ByteOrder.nativeOrder().equals(ByteOrder.LITTLE_ENDIAN);
-
   // This number limits the number of bytes to copy per call to Unsafe's
   // copyMemory method. A limit is imposed to allow for safepoint polling
   // during a large copy
@@ -50,249 +46,6 @@ public final class UnsafeAccess {
   private UnsafeAccess() {
   }
 
-  // APIs to read primitive data from a byte[] using Unsafe way
-  /**
-   * Converts a byte array to a short value considering it was written in big-endian format.
-   * @param bytes  byte array
-   * @param offset offset into array
-   * @return the short value
-   */
-  public static short toShort(byte[] bytes, int offset) {
-    if (LITTLE_ENDIAN) {
-      return Short
-        .reverseBytes(HBasePlatformDependent.getShort(bytes, offset + BYTE_ARRAY_BASE_OFFSET));
-    } else {
-      return HBasePlatformDependent.getShort(bytes, offset + BYTE_ARRAY_BASE_OFFSET);
-    }
-  }
-
-  /**
-   * Converts a byte array to an int value considering it was written in big-endian format.
-   * @param bytes  byte array
-   * @param offset offset into array
-   * @return the int value
-   */
-  public static int toInt(byte[] bytes, int offset) {
-    if (LITTLE_ENDIAN) {
-      return Integer
-        .reverseBytes(HBasePlatformDependent.getInt(bytes, offset + BYTE_ARRAY_BASE_OFFSET));
-    } else {
-      return HBasePlatformDependent.getInt(bytes, offset + BYTE_ARRAY_BASE_OFFSET);
-    }
-  }
-
-  /**
-   * Converts a byte array to a long value considering it was written in big-endian format.
-   * @param bytes  byte array
-   * @param offset offset into array
-   * @return the long value
-   */
-  public static long toLong(byte[] bytes, int offset) {
-    if (LITTLE_ENDIAN) {
-      return Long
-        .reverseBytes(HBasePlatformDependent.getLong(bytes, offset + BYTE_ARRAY_BASE_OFFSET));
-    } else {
-      return HBasePlatformDependent.getLong(bytes, offset + BYTE_ARRAY_BASE_OFFSET);
-    }
-  }
-
-  // APIs to write primitive data to a byte[] using Unsafe way
-  /**
-   * Put a short value out to the specified byte array position in big-endian format.
-   * @param bytes  the byte array
-   * @param offset position in the array
-   * @param val    short to write out
-   * @return incremented offset
-   */
-  public static int putShort(byte[] bytes, int offset, short val) {
-    if (LITTLE_ENDIAN) {
-      val = Short.reverseBytes(val);
-    }
-    HBasePlatformDependent.putShort(bytes, offset + BYTE_ARRAY_BASE_OFFSET, val);
-    return offset + Bytes.SIZEOF_SHORT;
-  }
-
-  /**
-   * Put an int value out to the specified byte array position in big-endian format.
-   * @param bytes  the byte array
-   * @param offset position in the array
-   * @param val    int to write out
-   * @return incremented offset
-   */
-  public static int putInt(byte[] bytes, int offset, int val) {
-    if (LITTLE_ENDIAN) {
-      val = Integer.reverseBytes(val);
-    }
-    HBasePlatformDependent.putInt(bytes, offset + BYTE_ARRAY_BASE_OFFSET, val);
-    return offset + Bytes.SIZEOF_INT;
-  }
-
-  /**
-   * Put a long value out to the specified byte array position in big-endian format.
-   * @param bytes  the byte array
-   * @param offset position in the array
-   * @param val    long to write out
-   * @return incremented offset
-   */
-  public static int putLong(byte[] bytes, int offset, long val) {
-    if (LITTLE_ENDIAN) {
-      val = Long.reverseBytes(val);
-    }
-    HBasePlatformDependent.putLong(bytes, offset + BYTE_ARRAY_BASE_OFFSET, val);
-    return offset + Bytes.SIZEOF_LONG;
-  }
-
-  // APIs to read primitive data from a ByteBuffer using Unsafe way
-  /**
-   * Reads a short value at the given buffer's offset considering it was written in big-endian
-   * format.
-   * @return short value at offset
-   */
-  public static short toShort(ByteBuffer buf, int offset) {
-    if (LITTLE_ENDIAN) {
-      return Short.reverseBytes(getAsShort(buf, offset));
-    }
-    return getAsShort(buf, offset);
-  }
-
-  /**
-   * Reads a short value at the given Object's offset considering it was written in big-endian
-   * format.
-   * @return short value at offset
-   */
-  public static short toShort(Object ref, long offset) {
-    if (LITTLE_ENDIAN) {
-      return Short.reverseBytes(HBasePlatformDependent.getShort(ref, offset));
-    }
-    return HBasePlatformDependent.getShort(ref, offset);
-  }
-
-  /**
-   * Reads bytes at the given offset as a short value.
-   * @return short value at offset
-   */
-  private static short getAsShort(ByteBuffer buf, int offset) {
-    if (buf.isDirect()) {
-      return HBasePlatformDependent.getShort(directBufferAddress(buf) + offset);
-    }
-    return HBasePlatformDependent.getShort(buf.array(),
-      BYTE_ARRAY_BASE_OFFSET + buf.arrayOffset() + offset);
-  }
-
-  /**
-   * Reads an int value at the given buffer's offset considering it was written in big-endian
-   * format.
-   * @return int value at offset
-   */
-  public static int toInt(ByteBuffer buf, int offset) {
-    if (LITTLE_ENDIAN) {
-      return Integer.reverseBytes(getAsInt(buf, offset));
-    }
-    return getAsInt(buf, offset);
-  }
-
-  /**
-   * Reads a int value at the given Object's offset considering it was written in big-endian format.
-   * @return int value at offset
-   */
-  public static int toInt(Object ref, long offset) {
-    if (LITTLE_ENDIAN) {
-      return Integer.reverseBytes(HBasePlatformDependent.getInt(ref, offset));
-    }
-    return HBasePlatformDependent.getInt(ref, offset);
-  }
-
-  /**
-   * Reads bytes at the given offset as an int value.
-   * @return int value at offset
-   */
-  private static int getAsInt(ByteBuffer buf, int offset) {
-    if (buf.isDirect()) {
-      return HBasePlatformDependent.getInt(directBufferAddress(buf) + offset);
-    }
-    return HBasePlatformDependent.getInt(buf.array(),
-      BYTE_ARRAY_BASE_OFFSET + buf.arrayOffset() + offset);
-  }
-
-  /**
-   * Reads a long value at the given buffer's offset considering it was written in big-endian
-   * format.
-   * @return long value at offset
-   */
-  public static long toLong(ByteBuffer buf, int offset) {
-    if (LITTLE_ENDIAN) {
-      return Long.reverseBytes(getAsLong(buf, offset));
-    }
-    return getAsLong(buf, offset);
-  }
-
-  /**
-   * Reads a long value at the given Object's offset considering it was written in big-endian
-   * format.
-   * @return long value at offset
-   */
-  public static long toLong(Object ref, long offset) {
-    if (LITTLE_ENDIAN) {
-      return Long.reverseBytes(HBasePlatformDependent.getLong(ref, offset));
-    }
-    return HBasePlatformDependent.getLong(ref, offset);
-  }
-
-  /**
-   * Reads bytes at the given offset as a long value.
-   * @return long value at offset
-   */
-  private static long getAsLong(ByteBuffer buf, int offset) {
-    if (buf.isDirect()) {
-      return HBasePlatformDependent.getLong(directBufferAddress(buf) + offset);
-    }
-    return HBasePlatformDependent.getLong(buf.array(),
-      BYTE_ARRAY_BASE_OFFSET + buf.arrayOffset() + offset);
-  }
-
-  /**
-   * Returns the byte at the given offset
-   * @param buf    the buffer to read
-   * @param offset the offset at which the byte has to be read
-   * @return the byte at the given offset
-   */
-  public static byte toByte(ByteBuffer buf, int offset) {
-    if (buf.isDirect()) {
-      return HBasePlatformDependent.getByte(directBufferAddress(buf) + offset);
-    } else {
-      return HBasePlatformDependent.getByte(buf.array(),
-        BYTE_ARRAY_BASE_OFFSET + buf.arrayOffset() + offset);
-    }
-  }
-
-  /**
-   * Returns the byte at the given offset of the object
-   * @return the byte at the given offset
-   */
-  public static byte toByte(Object ref, long offset) {
-    return HBasePlatformDependent.getByte(ref, offset);
-  }
-
-  /**
-   * Put an int value out to the specified ByteBuffer offset in big-endian format.
-   * @param buf    the ByteBuffer to write to
-   * @param offset offset in the ByteBuffer
-   * @param val    int to write out
-   * @return incremented offset
-   */
-  public static int putInt(ByteBuffer buf, int offset, int val) {
-    if (LITTLE_ENDIAN) {
-      val = Integer.reverseBytes(val);
-    }
-    if (buf.isDirect()) {
-      HBasePlatformDependent.putInt(directBufferAddress(buf) + offset, val);
-    } else {
-      HBasePlatformDependent.putInt(buf.array(),
-        offset + buf.arrayOffset() + BYTE_ARRAY_BASE_OFFSET, val);
-    }
-    return offset + Bytes.SIZEOF_INT;
-  }
-
   // APIs to copy data. This will be direct memory location copy and will be much faster
   /**
    * Copies the bytes from given array's offset to length part into the given buffer.
@@ -375,47 +128,6 @@ public final class UnsafeAccess {
     unsafeCopy(srcBase, srcAddress, destBase, destAddress, length);
   }
 
-  // APIs to add primitives to BBs
-  /**
-   * Put a short value out to the specified BB position in big-endian format.
-   * @param buf    the byte buffer
-   * @param offset position in the buffer
-   * @param val    short to write out
-   * @return incremented offset
-   */
-  public static int putShort(ByteBuffer buf, int offset, short val) {
-    if (LITTLE_ENDIAN) {
-      val = Short.reverseBytes(val);
-    }
-    if (buf.isDirect()) {
-      HBasePlatformDependent.putShort(directBufferAddress(buf) + offset, val);
-    } else {
-      HBasePlatformDependent.putShort(buf.array(),
-        BYTE_ARRAY_BASE_OFFSET + buf.arrayOffset() + offset, val);
-    }
-    return offset + Bytes.SIZEOF_SHORT;
-  }
-
-  /**
-   * Put a long value out to the specified BB position in big-endian format.
-   * @param buf    the byte buffer
-   * @param offset position in the buffer
-   * @param val    long to write out
-   * @return incremented offset
-   */
-  public static int putLong(ByteBuffer buf, int offset, long val) {
-    if (LITTLE_ENDIAN) {
-      val = Long.reverseBytes(val);
-    }
-    if (buf.isDirect()) {
-      HBasePlatformDependent.putLong(directBufferAddress(buf) + offset, val);
-    } else {
-      HBasePlatformDependent.putLong(buf.array(),
-        BYTE_ARRAY_BASE_OFFSET + buf.arrayOffset() + offset, val);
-    }
-    return offset + Bytes.SIZEOF_LONG;
-  }
-
   /**
    * Put a byte value out to the specified BB position in big-endian format.
    * @param buf    the byte buffer
@@ -436,9 +148,4 @@ public final class UnsafeAccess {
   public static long directBufferAddress(ByteBuffer buf) {
     return PlatformDependent.directBufferAddress(buf);
   }
-
-  public static void freeDirectBuffer(ByteBuffer buffer) {
-    // here we just use the method in netty
-    PlatformDependent.freeDirectBuffer(buffer);
-  }
 }
diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/ByteBufferUtilsTestBase.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/ByteBufferUtilsTestBase.java
index 0c7c00fbfd6..80b701601dc 100644
--- a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/ByteBufferUtilsTestBase.java
+++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/ByteBufferUtilsTestBase.java
@@ -503,6 +503,174 @@ public class ByteBufferUtilsTestBase {
     assertEquals(0, result);
   }
 
+  @Test
+  public void testCompareToEmptyBuffers() {
+    ByteBuffer empty1 = ByteBuffer.allocate(0);
+    ByteBuffer empty2 = ByteBuffer.allocate(0);
+    ByteBuffer nonEmpty = ByteBuffer.allocate(10);
+    fillBB(nonEmpty, (byte) 1);
+    byte[] emptyArray = new byte[0];
+    byte[] nonEmptyArray = new byte[10];
+    fillArray(nonEmptyArray, (byte) 1);
+
+    // two empty buffers are equal
+    assertEquals(0, ByteBufferUtils.compareTo(empty1, 0, 0, empty2, 0, 0));
+    // nonempty buffer is greater than empty
+    assertTrue(ByteBufferUtils.compareTo(nonEmpty, 0, 10, empty1, 0, 0) > 0);
+    // empty buffer is less than nonempty
+    assertTrue(ByteBufferUtils.compareTo(empty1, 0, 0, nonEmpty, 0, 10) < 0);
+    // empty buffer is equal to empty array
+    assertEquals(0, ByteBufferUtils.compareTo(empty1, 0, 0, emptyArray, 0, 0));
+    // nonempty buffer is greater than empty array
+    assertTrue(ByteBufferUtils.compareTo(nonEmpty, 0, 10, emptyArray, 0, 0) > 0);
+    // empty buffer is less than nonempty array
+    assertTrue(ByteBufferUtils.compareTo(empty1, 0, 0, nonEmptyArray, 0, 10) < 0);
+  }
+
+  @Test
+  public void testCompareToSingleByte() {
+    ByteBuffer bb1 = ByteBuffer.allocate(1);
+    ByteBuffer bb2 = ByteBuffer.allocate(1);
+    byte[] b1 = new byte[1];
+    byte[] b2 = new byte[1];
+
+    bb1.put(0, (byte) 5);
+    bb2.put(0, (byte) 10);
+    b1[0] = (byte) 5;
+    b2[0] = (byte) 10;
+
+    // 5 < 10
+    assertTrue(ByteBufferUtils.compareTo(bb1, 0, 1, bb2, 0, 1) < 0);
+    // 5 < 10
+    assertTrue(ByteBufferUtils.compareTo(bb1, 0, 1, b2, 0, 1) < 0);
+    // 10 > 5
+    assertTrue(ByteBufferUtils.compareTo(bb2, 0, 1, b1, 0, 1) > 0);
+    // 5 == 5
+    assertEquals(0, ByteBufferUtils.compareTo(bb1, 0, 1, b1, 0, 1));
+  }
+
+  @Test
+  public void testCompareToLengthDifferences() {
+    ByteBuffer longer = ByteBuffer.allocate(20);
+    ByteBuffer shorter = ByteBuffer.allocate(10);
+    fillBB(longer, (byte) 5);
+    fillBB(shorter, (byte) 5);
+
+    // long buffer > short buffer
+    assertTrue(ByteBufferUtils.compareTo(longer, 0, 20, shorter, 0, 10) > 0);
+    // short buffer < long buffer
+    assertTrue(ByteBufferUtils.compareTo(shorter, 0, 10, longer, 0, 20) < 0);
+    // short slice of long buffer == short buffer
+    assertEquals(0, ByteBufferUtils.compareTo(longer, 0, 10, shorter, 0, 10));
+
+    byte[] longerArray = new byte[20];
+    byte[] shorterArray = new byte[10];
+    fillArray(longerArray, (byte) 5);
+    fillArray(shorterArray, (byte) 5);
+
+    // long buffer > short array
+    assertTrue(ByteBufferUtils.compareTo(longer, 0, 20, shorterArray, 0, 10) > 0);
+    // short buffer < long array
+    assertTrue(ByteBufferUtils.compareTo(shorter, 0, 10, longerArray, 0, 20) < 0);
+  }
+
+  @Test
+  public void testCompareToWithOffsets() {
+    ByteBuffer bb = ByteBuffer.allocate(30);
+    for (int i = 0; i < 30; i++) {
+      bb.put(i, (byte) (i % 10));
+    }
+
+    // equal slices of equal buffers are equal
+    assertEquals(0, ByteBufferUtils.compareTo(bb, 5, 10, bb, 5, 10));
+    assertEquals(0, ByteBufferUtils.compareTo(bb, 0, 10, bb, 10, 10));
+
+    // nonequal slices of equal buffers are nonequal
+    assertTrue(ByteBufferUtils.compareTo(bb, 0, 10, bb, 11, 10) < 0);
+    assertTrue(ByteBufferUtils.compareTo(bb, 11, 10, bb, 0, 10) > 0);
+
+    byte[] array = new byte[10];
+    for (int i = 0; i < 10; i++) {
+      array[i] = (byte) (i % 10);
+    }
+    // equal slices of buffers + arrays are equal
+    assertEquals(0, ByteBufferUtils.compareTo(bb, 0, 10, array, 0, 10));
+    assertEquals(0, ByteBufferUtils.compareTo(bb, 10, 10, array, 0, 10));
+  }
+
+  @Test
+  public void testCompareToDirectVsHeapBuffers() {
+    ByteBuffer heap = ByteBuffer.allocate(100);
+    ByteBuffer direct = ByteBuffer.allocateDirect(100);
+    fillBB(heap, (byte) 42);
+    fillBB(direct, (byte) 42);
+
+    // equal buffers are equal, even if direct versus heap
+    assertEquals(0, ByteBufferUtils.compareTo(heap, 0, 100, direct, 0, 100));
+    assertEquals(0, ByteBufferUtils.compareTo(direct, 0, 100, heap, 0, 100));
+
+    heap.put(50, (byte) 41);
+    assertTrue(ByteBufferUtils.compareTo(heap, 0, 100, direct, 0, 100) < 0);
+    assertTrue(ByteBufferUtils.compareTo(direct, 0, 100, heap, 0, 100) > 0);
+
+    heap.put(50, (byte) 43);
+    assertTrue(ByteBufferUtils.compareTo(heap, 0, 100, direct, 0, 100) > 0);
+    assertTrue(ByteBufferUtils.compareTo(direct, 0, 100, heap, 0, 100) < 0);
+  }
+
+  @Test
+  public void testCompareToStrideBoundaries() {
+    ByteBuffer bb1 = ByteBuffer.allocate(100);
+    ByteBuffer bb2 = ByteBuffer.allocate(100);
+    fillBB(bb1, (byte) 5);
+    fillBB(bb2, (byte) 5);
+
+    bb1.put(7, (byte) 6);
+    assertTrue(ByteBufferUtils.compareTo(bb1, 0, 100, bb2, 0, 100) > 0);
+
+    fillBB(bb1, (byte) 5);
+    bb1.put(8, (byte) 6);
+    assertTrue(ByteBufferUtils.compareTo(bb1, 0, 100, bb2, 0, 100) > 0);
+
+    fillBB(bb1, (byte) 5);
+    bb1.put(16, (byte) 6);
+    assertTrue(ByteBufferUtils.compareTo(bb1, 0, 100, bb2, 0, 100) > 0);
+
+    fillBB(bb1, (byte) 5);
+    bb1.put(24, (byte) 6);
+    assertTrue(ByteBufferUtils.compareTo(bb1, 0, 100, bb2, 0, 100) > 0);
+
+    fillBB(bb1, (byte) 5);
+    bb1.put(31, (byte) 6);
+    assertTrue(ByteBufferUtils.compareTo(bb1, 0, 100, bb2, 0, 100) > 0);
+  }
+
+  @Test
+  public void testCompareToUnsignedBytes() {
+    ByteBuffer bb1 = ByteBuffer.allocate(10);
+    ByteBuffer bb2 = ByteBuffer.allocate(10);
+    fillBB(bb1, (byte) 0);
+    fillBB(bb2, (byte) 0);
+
+    bb1.put(5, (byte) 127);
+    bb2.put(5, (byte) -128);
+    assertTrue(ByteBufferUtils.compareTo(bb1, 0, 10, bb2, 0, 10) < 0);
+
+    fillBB(bb1, (byte) 0);
+    fillBB(bb2, (byte) 0);
+    bb1.put(5, (byte) -1);
+    bb2.put(5, (byte) 0);
+    assertTrue(ByteBufferUtils.compareTo(bb1, 0, 10, bb2, 0, 10) > 0);
+
+    byte[] b1 = new byte[10];
+    byte[] b2 = new byte[10];
+    Arrays.fill(b1, (byte) 0);
+    Arrays.fill(b2, (byte) 0);
+    b1[5] = (byte) -1;
+    b2[5] = (byte) 0;
+    assertTrue(ByteBufferUtils.compareTo(bb1, 0, 10, b2, 0, 10) > 0);
+  }
+
   @Test
   public void testEquals() {
     byte[] a = Bytes.toBytes("http://A");
@@ -558,6 +726,768 @@ public class ByteBufferUtilsTestBase {
       ByteBufferUtils.findCommonPrefix(bb1, 0, bb1.remaining(), bb2, 0, bb2.remaining()));
   }
 
+  @Test
+  public void testConverterToShort() {
+    ByteBuffer heap = ByteBuffer.allocate(20);
+    ByteBuffer direct = ByteBuffer.allocateDirect(20);
+
+    short[] testValues =
+      { 0, 1, -1, Short.MIN_VALUE, Short.MAX_VALUE, 127, -128, 255, -255, 1000, -1000 };
+
+    for (short value : testValues) {
+      heap.clear();
+      direct.clear();
+
+      heap.putShort(0, value);
+      heap.putShort(5, value);
+      heap.putShort(10, value);
+      direct.putShort(0, value);
+      direct.putShort(5, value);
+      direct.putShort(10, value);
+
+      assertEquals(value, ByteBufferUtils.toShort(heap, 0));
+      assertEquals(value, ByteBufferUtils.toShort(heap, 5));
+      assertEquals(value, ByteBufferUtils.toShort(heap, 10));
+      assertEquals(value, ByteBufferUtils.toShort(direct, 0));
+      assertEquals(value, ByteBufferUtils.toShort(direct, 5));
+      assertEquals(value, ByteBufferUtils.toShort(direct, 10));
+    }
+  }
+
+  @Test
+  public void testConverterToIntWithPosition() {
+    ByteBuffer heap = ByteBuffer.allocate(20);
+    ByteBuffer direct = ByteBuffer.allocateDirect(20);
+
+    int[] testValues = { 0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE, 127, -128, 65535, -65535,
+      1000000, -1000000 };
+
+    for (int value : testValues) {
+      heap.clear();
+      direct.clear();
+
+      heap.putInt(0, value);
+      heap.putInt(4, value + 1);
+      heap.putInt(8, value + 2);
+      direct.putInt(0, value);
+      direct.putInt(4, value + 1);
+      direct.putInt(8, value + 2);
+
+      heap.position(0);
+      assertEquals(value, ByteBufferUtils.toInt(heap));
+      assertEquals(4, heap.position());
+      assertEquals(value + 1, ByteBufferUtils.toInt(heap));
+      assertEquals(8, heap.position());
+
+      direct.position(0);
+      assertEquals(value, ByteBufferUtils.toInt(direct));
+      assertEquals(4, direct.position());
+      assertEquals(value + 1, ByteBufferUtils.toInt(direct));
+      assertEquals(8, direct.position());
+    }
+  }
+
+  @Test
+  public void testConverterToIntWithOffset() {
+    ByteBuffer heap = ByteBuffer.allocate(20);
+    ByteBuffer direct = ByteBuffer.allocateDirect(20);
+
+    int[] testValues = { 0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE, 127, -128, 65535, -65535,
+      1000000, -1000000 };
+
+    for (int value : testValues) {
+      heap.clear();
+      direct.clear();
+
+      heap.putInt(0, value);
+      heap.putInt(4, value);
+      heap.putInt(12, value);
+      direct.putInt(0, value);
+      direct.putInt(4, value);
+      direct.putInt(12, value);
+
+      assertEquals(value, ByteBufferUtils.toInt(heap, 0));
+      assertEquals(value, ByteBufferUtils.toInt(heap, 4));
+      assertEquals(value, ByteBufferUtils.toInt(heap, 12));
+      assertEquals(value, ByteBufferUtils.toInt(direct, 0));
+      assertEquals(value, ByteBufferUtils.toInt(direct, 4));
+      assertEquals(value, ByteBufferUtils.toInt(direct, 12));
+    }
+  }
+
+  @Test
+  public void testConverterToLong() {
+    ByteBuffer heap = ByteBuffer.allocate(32);
+    ByteBuffer direct = ByteBuffer.allocateDirect(32);
+
+    long[] testValues = { 0L, 1L, -1L, Long.MIN_VALUE, Long.MAX_VALUE, 127L, -128L, 65535L, -65535L,
+      Integer.MAX_VALUE + 1L, Integer.MIN_VALUE - 1L, 1000000000000L, -1000000000000L };
+
+    for (long value : testValues) {
+      heap.clear();
+      direct.clear();
+
+      heap.putLong(0, value);
+      heap.putLong(8, value);
+      heap.putLong(16, value);
+      direct.putLong(0, value);
+      direct.putLong(8, value);
+      direct.putLong(16, value);
+
+      assertEquals(value, ByteBufferUtils.toLong(heap, 0));
+      assertEquals(value, ByteBufferUtils.toLong(heap, 8));
+      assertEquals(value, ByteBufferUtils.toLong(heap, 16));
+      assertEquals(value, ByteBufferUtils.toLong(direct, 0));
+      assertEquals(value, ByteBufferUtils.toLong(direct, 8));
+      assertEquals(value, ByteBufferUtils.toLong(direct, 16));
+    }
+  }
+
+  @Test
+  public void testConverterPutShortWithPosition() {
+    ByteBuffer heap = ByteBuffer.allocate(20);
+    ByteBuffer direct = ByteBuffer.allocateDirect(20);
+
+    short[] testValues =
+      { 0, 1, -1, Short.MIN_VALUE, Short.MAX_VALUE, 127, -128, 255, -255, 1000, -1000 };
+
+    for (short value : testValues) {
+      heap.clear();
+      direct.clear();
+
+      heap.position(0);
+      ByteBufferUtils.putShort(heap, value);
+      assertEquals(2, heap.position());
+      ByteBufferUtils.putShort(heap, (short) (value + 1));
+      assertEquals(4, heap.position());
+
+      heap.position(0);
+      assertEquals(value, heap.getShort());
+      assertEquals((short) (value + 1), heap.getShort());
+
+      direct.position(0);
+      ByteBufferUtils.putShort(direct, value);
+      assertEquals(2, direct.position());
+      ByteBufferUtils.putShort(direct, (short) (value + 1));
+      assertEquals(4, direct.position());
+
+      direct.position(0);
+      assertEquals(value, direct.getShort());
+      assertEquals((short) (value + 1), direct.getShort());
+    }
+  }
+
+  @Test
+  public void testConverterPutShortWithIndex() {
+    ByteBuffer heap = ByteBuffer.allocate(20);
+    ByteBuffer direct = ByteBuffer.allocateDirect(20);
+
+    short[] testValues =
+      { 0, 1, -1, Short.MIN_VALUE, Short.MAX_VALUE, 127, -128, 255, -255, 1000, -1000 };
+
+    for (short value : testValues) {
+      heap.clear();
+      direct.clear();
+
+      heap.position(5);
+      int newIndex = ByteBufferUtils.putShort(heap, 0, value);
+      assertEquals(0 + Short.BYTES, newIndex);
+      assertEquals(5, heap.position());
+      assertEquals(value, heap.getShort(5));
+
+      direct.position(5);
+      newIndex = ByteBufferUtils.putShort(direct, 0, value);
+      assertEquals(0 + Short.BYTES, newIndex);
+      assertEquals(5, direct.position());
+      assertEquals(value, direct.getShort(5));
+    }
+  }
+
+  @Test
+  public void testConverterPutIntWithPosition() {
+    ByteBuffer heap = ByteBuffer.allocate(20);
+    ByteBuffer direct = ByteBuffer.allocateDirect(20);
+
+    int[] testValues = { 0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE, 127, -128, 65535, -65535,
+      1000000, -1000000 };
+
+    for (int value : testValues) {
+      heap.clear();
+      direct.clear();
+
+      heap.position(0);
+      ByteBufferUtils.putInt(heap, value);
+      assertEquals(4, heap.position());
+      ByteBufferUtils.putInt(heap, value + 1);
+      assertEquals(8, heap.position());
+
+      heap.position(0);
+      assertEquals(value, heap.getInt());
+      assertEquals(value + 1, heap.getInt());
+
+      direct.position(0);
+      ByteBufferUtils.putInt(direct, value);
+      assertEquals(4, direct.position());
+      ByteBufferUtils.putInt(direct, value + 1);
+      assertEquals(8, direct.position());
+
+      direct.position(0);
+      assertEquals(value, direct.getInt());
+      assertEquals(value + 1, direct.getInt());
+    }
+  }
+
+  @Test
+  public void testConverterPutIntWithIndex() {
+    ByteBuffer heap = ByteBuffer.allocate(20);
+    ByteBuffer direct = ByteBuffer.allocateDirect(20);
+
+    int[] testValues = { 0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE, 127, -128, 65535, -65535,
+      1000000, -1000000 };
+
+    for (int value : testValues) {
+      heap.clear();
+      direct.clear();
+
+      heap.position(5);
+      int newIndex = ByteBufferUtils.putInt(heap, 0, value);
+      assertEquals(0 + Integer.BYTES, newIndex);
+      assertEquals(5, heap.position());
+      assertEquals(value, heap.getInt(5));
+
+      direct.position(5);
+      newIndex = ByteBufferUtils.putInt(direct, 0, value);
+      assertEquals(0 + Integer.BYTES, newIndex);
+      assertEquals(5, direct.position());
+      assertEquals(value, direct.getInt(5));
+    }
+  }
+
+  @Test
+  public void testConverterPutLongWithPosition() {
+    ByteBuffer heap = ByteBuffer.allocate(32);
+    ByteBuffer direct = ByteBuffer.allocateDirect(32);
+
+    long[] testValues = { 0L, 1L, -1L, Long.MIN_VALUE, Long.MAX_VALUE, 127L, -128L, 65535L, -65535L,
+      Integer.MAX_VALUE + 1L, Integer.MIN_VALUE - 1L, 1000000000000L, -1000000000000L };
+
+    for (long value : testValues) {
+      heap.clear();
+      direct.clear();
+
+      heap.position(0);
+      ByteBufferUtils.putLong(heap, value);
+      assertEquals(8, heap.position());
+      ByteBufferUtils.putLong(heap, value + 1);
+      assertEquals(16, heap.position());
+
+      heap.position(0);
+      assertEquals(value, heap.getLong());
+      assertEquals(value + 1, heap.getLong());
+
+      direct.position(0);
+      ByteBufferUtils.putLong(direct, value);
+      assertEquals(8, direct.position());
+      ByteBufferUtils.putLong(direct, value + 1);
+      assertEquals(16, direct.position());
+
+      direct.position(0);
+      assertEquals(value, direct.getLong());
+      assertEquals(value + 1, direct.getLong());
+    }
+  }
+
+  @Test
+  public void testConverterPutLongWithIndex() {
+    ByteBuffer heap = ByteBuffer.allocate(32);
+    ByteBuffer direct = ByteBuffer.allocateDirect(32);
+
+    long[] testValues = { 0L, 1L, -1L, Long.MIN_VALUE, Long.MAX_VALUE, 127L, -128L, 65535L, -65535L,
+      Integer.MAX_VALUE + 1L, Integer.MIN_VALUE - 1L, 1000000000000L, -1000000000000L };
+
+    for (long value : testValues) {
+      heap.clear();
+      direct.clear();
+
+      heap.position(8);
+      int newIndex = ByteBufferUtils.putLong(heap, 0, value);
+      assertEquals(0 + Long.BYTES, newIndex);
+      assertEquals(8, heap.position());
+      assertEquals(value, heap.getLong(8));
+
+      direct.position(8);
+      newIndex = ByteBufferUtils.putLong(direct, 0, value);
+      assertEquals(0 + Long.BYTES, newIndex);
+      assertEquals(8, direct.position());
+      assertEquals(value, direct.getLong(8));
+    }
+  }
+
+  @Test
+  public void testConverterRoundTripShort() {
+    ByteBuffer heap = ByteBuffer.allocate(20);
+    ByteBuffer direct = ByteBuffer.allocateDirect(20);
+
+    short[] testValues =
+      { 0, 1, -1, Short.MIN_VALUE, Short.MAX_VALUE, 127, -128, 255, -255, 1000, -1000 };
+
+    for (short value : testValues) {
+      heap.clear();
+      direct.clear();
+
+      heap.position(5);
+      ByteBufferUtils.putShort(heap, value);
+      assertEquals(value, ByteBufferUtils.toShort(heap, 5));
+
+      direct.position(5);
+      ByteBufferUtils.putShort(direct, value);
+      assertEquals(value, ByteBufferUtils.toShort(direct, 5));
+    }
+  }
+
+  @Test
+  public void testConverterRoundTripInt() {
+    ByteBuffer heap = ByteBuffer.allocate(20);
+    ByteBuffer direct = ByteBuffer.allocateDirect(20);
+
+    int[] testValues = { 0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE, 127, -128, 65535, -65535,
+      1000000, -1000000 };
+
+    for (int value : testValues) {
+      heap.clear();
+      direct.clear();
+
+      heap.position(5);
+      ByteBufferUtils.putInt(heap, value);
+      assertEquals(value, ByteBufferUtils.toInt(heap, 5));
+      heap.position(5);
+      assertEquals(value, ByteBufferUtils.toInt(heap));
+
+      direct.position(5);
+      ByteBufferUtils.putInt(direct, value);
+      assertEquals(value, ByteBufferUtils.toInt(direct, 5));
+      direct.position(5);
+      assertEquals(value, ByteBufferUtils.toInt(direct));
+    }
+  }
+
+  @Test
+  public void testConverterRoundTripLong() {
+    ByteBuffer heap = ByteBuffer.allocate(32);
+    ByteBuffer direct = ByteBuffer.allocateDirect(32);
+
+    long[] testValues = { 0L, 1L, -1L, Long.MIN_VALUE, Long.MAX_VALUE, 127L, -128L, 65535L, -65535L,
+      Integer.MAX_VALUE + 1L, Integer.MIN_VALUE - 1L, 1000000000000L, -1000000000000L };
+
+    for (long value : testValues) {
+      heap.clear();
+      direct.clear();
+
+      heap.position(8);
+      ByteBufferUtils.putLong(heap, value);
+      assertEquals(value, ByteBufferUtils.toLong(heap, 8));
+
+      direct.position(8);
+      ByteBufferUtils.putLong(direct, value);
+      assertEquals(value, ByteBufferUtils.toLong(direct, 8));
+    }
+  }
+
+  @Test
+  public void testConverterMultipleOperations() {
+    ByteBuffer heap = ByteBuffer.allocate(50);
+    ByteBuffer direct = ByteBuffer.allocateDirect(50);
+
+    for (ByteBuffer buffer : Arrays.asList(heap, direct)) {
+      buffer.clear();
+      buffer.position(0);
+
+      ByteBufferUtils.putShort(buffer, (short) 100);
+      ByteBufferUtils.putInt(buffer, 200000);
+      ByteBufferUtils.putLong(buffer, 3000000000L);
+      ByteBufferUtils.putShort(buffer, Short.MIN_VALUE);
+      ByteBufferUtils.putInt(buffer, Integer.MAX_VALUE);
+      ByteBufferUtils.putLong(buffer, Long.MIN_VALUE);
+
+      assertEquals(28, buffer.position());
+
+      assertEquals((short) 100, ByteBufferUtils.toShort(buffer, 0));
+      assertEquals(200000, ByteBufferUtils.toInt(buffer, 2));
+      assertEquals(3000000000L, ByteBufferUtils.toLong(buffer, 6));
+      assertEquals(Short.MIN_VALUE, ByteBufferUtils.toShort(buffer, 14));
+      assertEquals(Integer.MAX_VALUE, ByteBufferUtils.toInt(buffer, 16));
+      assertEquals(Long.MIN_VALUE, ByteBufferUtils.toLong(buffer, 20));
+
+      assertEquals((short) 100, ByteBufferUtils.toShort(buffer, 0));
+      buffer.position(2);
+      assertEquals(200000, ByteBufferUtils.toInt(buffer));
+      assertEquals(3000000000L, ByteBufferUtils.toLong(buffer, 6));
+    }
+  }
+
+  @Test
+  public void testConverterBigEndianByteOrder() {
+    ByteBuffer heap = ByteBuffer.allocate(20);
+    ByteBuffer direct = ByteBuffer.allocateDirect(20);
+
+    for (ByteBuffer buffer : Arrays.asList(heap, direct)) {
+      buffer.clear();
+
+      buffer.position(0);
+      ByteBufferUtils.putInt(buffer, 0x01020304);
+      assertEquals((byte) 0x01, buffer.get(0));
+      assertEquals((byte) 0x02, buffer.get(1));
+      assertEquals((byte) 0x03, buffer.get(2));
+      assertEquals((byte) 0x04, buffer.get(3));
+
+      buffer.position(0);
+      ByteBufferUtils.putShort(buffer, (short) 0x0102);
+      assertEquals((byte) 0x01, buffer.get(0));
+      assertEquals((byte) 0x02, buffer.get(1));
+
+      buffer.position(0);
+      ByteBufferUtils.putLong(buffer, 0x0102030405060708L);
+      assertEquals((byte) 0x01, buffer.get(0));
+      assertEquals((byte) 0x02, buffer.get(1));
+      assertEquals((byte) 0x03, buffer.get(2));
+      assertEquals((byte) 0x04, buffer.get(3));
+      assertEquals((byte) 0x05, buffer.get(4));
+      assertEquals((byte) 0x06, buffer.get(5));
+      assertEquals((byte) 0x07, buffer.get(6));
+      assertEquals((byte) 0x08, buffer.get(7));
+    }
+  }
+
+  @Test
+  public void testCommonPrefixerIdenticalSequences() {
+    ByteBuffer heap = ByteBuffer.allocate(100);
+    ByteBuffer direct = ByteBuffer.allocateDirect(100);
+    byte[] array = new byte[100];
+
+    for (int i = 0; i < 100; i++) {
+      heap.put(i, (byte) i);
+      direct.put(i, (byte) i);
+      array[i] = (byte) i;
+    }
+
+    assertEquals(100, ByteBufferUtils.findCommonPrefix(heap, 0, 100, heap, 0, 100));
+    assertEquals(100, ByteBufferUtils.findCommonPrefix(direct, 0, 100, direct, 0, 100));
+    assertEquals(100, ByteBufferUtils.findCommonPrefix(heap, 0, 100, direct, 0, 100));
+    assertEquals(100, ByteBufferUtils.findCommonPrefix(heap, 0, 100, array, 0, 100));
+    assertEquals(100, ByteBufferUtils.findCommonPrefix(direct, 0, 100, array, 0, 100));
+  }
+
+  @Test
+  public void testCommonPrefixerEmptySequences() {
+    ByteBuffer heap = ByteBuffer.allocate(10);
+    ByteBuffer direct = ByteBuffer.allocateDirect(10);
+    byte[] array = new byte[10];
+
+    assertEquals(0, ByteBufferUtils.findCommonPrefix(heap, 0, 0, heap, 0, 0));
+    assertEquals(0, ByteBufferUtils.findCommonPrefix(direct, 0, 0, direct, 0, 0));
+    assertEquals(0, ByteBufferUtils.findCommonPrefix(heap, 0, 0, array, 0, 0));
+    assertEquals(0, ByteBufferUtils.findCommonPrefix(direct, 0, 0, array, 0, 0));
+  }
+
+  @Test
+  public void testCommonPrefixerDifferentLengths() {
+    ByteBuffer heap = ByteBuffer.allocate(100);
+    ByteBuffer direct = ByteBuffer.allocateDirect(100);
+    byte[] shortArray = new byte[50];
+    byte[] longArray = new byte[100];
+
+    for (int i = 0; i < 100; i++) {
+      byte value = (byte) i;
+      heap.put(i, value);
+      direct.put(i, value);
+      if (i < 50) {
+        shortArray[i] = value;
+      }
+      longArray[i] = value;
+    }
+
+    assertEquals(50, ByteBufferUtils.findCommonPrefix(heap, 0, 100, shortArray, 0, 50));
+    assertEquals(50, ByteBufferUtils.findCommonPrefix(direct, 0, 100, shortArray, 0, 50));
+    assertEquals(50, ByteBufferUtils.findCommonPrefix(heap, 0, 50, longArray, 0, 100));
+    assertEquals(50, ByteBufferUtils.findCommonPrefix(direct, 0, 50, longArray, 0, 100));
+  }
+
+  @Test
+  public void testCommonPrefixerDifferenceAtStrideBoundaries() {
+    ByteBuffer heap1 = ByteBuffer.allocate(100);
+    ByteBuffer heap2 = ByteBuffer.allocate(100);
+    ByteBuffer direct1 = ByteBuffer.allocateDirect(100);
+    ByteBuffer direct2 = ByteBuffer.allocateDirect(100);
+
+    int[] boundaryPositions = { 0, 1, 7, 8, 9, 15, 16, 17, 23, 24, 31, 32 };
+
+    for (int diffPos : boundaryPositions) {
+      fillBB(heap1, (byte) 5);
+      fillBB(heap2, (byte) 5);
+      fillBB(direct1, (byte) 5);
+      fillBB(direct2, (byte) 5);
+
+      heap2.put(diffPos, (byte) 99);
+      direct2.put(diffPos, (byte) 99);
+
+      assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(heap1, 0, 100, heap2, 0, 100));
+      assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(direct1, 0, 100, direct2, 0, 100));
+      assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(heap1, 0, 100, direct2, 0, 100));
+    }
+  }
+
+  @Test
+  public void testCommonPrefixerDifferenceAtStrideBoundariesWithArray() {
+    ByteBuffer heap = ByteBuffer.allocate(100);
+    ByteBuffer direct = ByteBuffer.allocateDirect(100);
+    byte[] array = new byte[100];
+
+    int[] boundaryPositions = { 0, 1, 7, 8, 9, 15, 16, 17, 23, 24, 31, 32 };
+
+    for (int diffPos : boundaryPositions) {
+      fillBB(heap, (byte) 5);
+      fillBB(direct, (byte) 5);
+      fillArray(array, (byte) 5);
+
+      array[diffPos] = (byte) 99;
+
+      assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(heap, 0, 100, array, 0, 100));
+      assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(direct, 0, 100, array, 0, 100));
+    }
+  }
+
+  @Test
+  public void testCommonPrefixerWithOffsets() {
+    ByteBuffer heap = ByteBuffer.allocate(120);
+    ByteBuffer direct = ByteBuffer.allocateDirect(120);
+    byte[] array = new byte[120];
+
+    for (int i = 0; i < 120; i++) {
+      heap.put(i, (byte) 42);
+      direct.put(i, (byte) 42);
+      array[i] = (byte) 42;
+    }
+
+    heap.put(70, (byte) 99);
+    direct.put(70, (byte) 99);
+    array[70] = (byte) 99;
+
+    assertEquals(50, ByteBufferUtils.findCommonPrefix(heap, 10, 60, heap, 20, 60));
+    assertEquals(50, ByteBufferUtils.findCommonPrefix(direct, 10, 60, direct, 20, 60));
+    assertEquals(50, ByteBufferUtils.findCommonPrefix(heap, 10, 60, array, 20, 60));
+    assertEquals(50, ByteBufferUtils.findCommonPrefix(direct, 10, 60, array, 20, 60));
+  }
+
+  @Test
+  public void testCommonPrefixerSingleByteDifferences() {
+    ByteBuffer heap1 = ByteBuffer.allocate(50);
+    ByteBuffer heap2 = ByteBuffer.allocate(50);
+    ByteBuffer direct1 = ByteBuffer.allocateDirect(50);
+    ByteBuffer direct2 = ByteBuffer.allocateDirect(50);
+    byte[] array = new byte[50];
+
+    for (int diffPos = 0; diffPos < 50; diffPos++) {
+      fillBB(heap1, (byte) 10);
+      fillBB(heap2, (byte) 10);
+      fillBB(direct1, (byte) 10);
+      fillBB(direct2, (byte) 10);
+      fillArray(array, (byte) 10);
+
+      heap2.put(diffPos, (byte) 20);
+      direct2.put(diffPos, (byte) 20);
+      array[diffPos] = (byte) 20;
+
+      assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(heap1, 0, 50, heap2, 0, 50));
+      assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(direct1, 0, 50, direct2, 0, 50));
+      assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(heap1, 0, 50, direct2, 0, 50));
+      assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(heap1, 0, 50, array, 0, 50));
+      assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(direct1, 0, 50, array, 0, 50));
+    }
+  }
+
+  @Test
+  public void testCommonPrefixerEpilogueBytes() {
+    for (int length = 1; length <= 15; length++) {
+      ByteBuffer heap1 = ByteBuffer.allocate(length);
+      ByteBuffer heap2 = ByteBuffer.allocate(length);
+      ByteBuffer direct1 = ByteBuffer.allocateDirect(length);
+      ByteBuffer direct2 = ByteBuffer.allocateDirect(length);
+      byte[] array = new byte[length];
+
+      for (int i = 0; i < length; i++) {
+        heap1.put(i, (byte) i);
+        heap2.put(i, (byte) i);
+        direct1.put(i, (byte) i);
+        direct2.put(i, (byte) i);
+        array[i] = (byte) i;
+      }
+
+      assertEquals(length, ByteBufferUtils.findCommonPrefix(heap1, 0, length, heap2, 0, length));
+      assertEquals(length,
+        ByteBufferUtils.findCommonPrefix(direct1, 0, length, direct2, 0, length));
+      assertEquals(length, ByteBufferUtils.findCommonPrefix(heap1, 0, length, array, 0, length));
+      assertEquals(length, ByteBufferUtils.findCommonPrefix(direct1, 0, length, array, 0, length));
+    }
+  }
+
+  @Test
+  public void testCommonPrefixerEpilogueDifference() {
+    for (int length = 9; length <= 15; length++) {
+      for (int diffPos = 8; diffPos < length; diffPos++) {
+        ByteBuffer heap1 = ByteBuffer.allocate(length);
+        ByteBuffer heap2 = ByteBuffer.allocate(length);
+        ByteBuffer direct1 = ByteBuffer.allocateDirect(length);
+        ByteBuffer direct2 = ByteBuffer.allocateDirect(length);
+        byte[] array = new byte[length];
+
+        for (int i = 0; i < length; i++) {
+          heap1.put(i, (byte) 5);
+          heap2.put(i, (byte) 5);
+          direct1.put(i, (byte) 5);
+          direct2.put(i, (byte) 5);
+          array[i] = (byte) 5;
+        }
+
+        heap2.put(diffPos, (byte) 99);
+        direct2.put(diffPos, (byte) 99);
+        array[diffPos] = (byte) 99;
+
+        assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(heap1, 0, length, heap2, 0, length));
+        assertEquals(diffPos,
+          ByteBufferUtils.findCommonPrefix(direct1, 0, length, direct2, 0, length));
+        assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(heap1, 0, length, array, 0, length));
+        assertEquals(diffPos,
+          ByteBufferUtils.findCommonPrefix(direct1, 0, length, array, 0, length));
+      }
+    }
+  }
+
+  @Test
+  public void testCommonPrefixerExtremeValues() {
+    ByteBuffer heap1 = ByteBuffer.allocate(50);
+    ByteBuffer heap2 = ByteBuffer.allocate(50);
+    ByteBuffer direct1 = ByteBuffer.allocateDirect(50);
+    ByteBuffer direct2 = ByteBuffer.allocateDirect(50);
+    byte[] array = new byte[50];
+
+    byte[] extremeValues = { Byte.MIN_VALUE, Byte.MAX_VALUE, 0, -1, 1, 127, -128, (byte) 0xFF };
+
+    for (byte value : extremeValues) {
+      fillBB(heap1, value);
+      fillBB(heap2, value);
+      fillBB(direct1, value);
+      fillBB(direct2, value);
+      fillArray(array, value);
+
+      assertEquals(50, ByteBufferUtils.findCommonPrefix(heap1, 0, 50, heap2, 0, 50));
+      assertEquals(50, ByteBufferUtils.findCommonPrefix(direct1, 0, 50, direct2, 0, 50));
+      assertEquals(50, ByteBufferUtils.findCommonPrefix(heap1, 0, 50, direct2, 0, 50));
+      assertEquals(50, ByteBufferUtils.findCommonPrefix(heap1, 0, 50, array, 0, 50));
+      assertEquals(50, ByteBufferUtils.findCommonPrefix(direct1, 0, 50, array, 0, 50));
+    }
+  }
+
+  @Test
+  public void testCommonPrefixerMultipleStrides() {
+    ByteBuffer heap1 = ByteBuffer.allocate(100);
+    ByteBuffer heap2 = ByteBuffer.allocate(100);
+    ByteBuffer direct1 = ByteBuffer.allocateDirect(100);
+    ByteBuffer direct2 = ByteBuffer.allocateDirect(100);
+    byte[] array = new byte[100];
+
+    for (int i = 0; i < 100; i++) {
+      heap1.put(i, (byte) (i % 10));
+      heap2.put(i, (byte) (i % 10));
+      direct1.put(i, (byte) (i % 10));
+      direct2.put(i, (byte) (i % 10));
+      array[i] = (byte) (i % 10);
+    }
+
+    int[] diffPositions = { 72, 73, 74, 75, 76, 77, 78, 79, 80 };
+
+    for (int diffPos : diffPositions) {
+      heap2.put(diffPos, (byte) 99);
+      direct2.put(diffPos, (byte) 99);
+      array[diffPos] = (byte) 99;
+
+      assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(heap1, 0, 100, heap2, 0, 100));
+      assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(direct1, 0, 100, direct2, 0, 100));
+      assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(heap1, 0, 100, array, 0, 100));
+      assertEquals(diffPos, ByteBufferUtils.findCommonPrefix(direct1, 0, 100, array, 0, 100));
+
+      heap2.put(diffPos, (byte) (diffPos % 10));
+      direct2.put(diffPos, (byte) (diffPos % 10));
+      array[diffPos] = (byte) (diffPos % 10);
+    }
+  }
+
+  @Test
+  public void testCommonPrefixerHeapVsDirectConsistency() {
+    ByteBuffer heap1 = ByteBuffer.allocate(100);
+    ByteBuffer heap2 = ByteBuffer.allocate(100);
+    ByteBuffer direct1 = ByteBuffer.allocateDirect(100);
+    ByteBuffer direct2 = ByteBuffer.allocateDirect(100);
+
+    for (int i = 0; i < 100; i++) {
+      byte value = (byte) (i * 3 % 256);
+      heap1.put(i, value);
+      heap2.put(i, value);
+      direct1.put(i, value);
+      direct2.put(i, value);
+    }
+
+    heap2.put(42, (byte) 0);
+    direct2.put(42, (byte) 0);
+
+    int heapResult = ByteBufferUtils.findCommonPrefix(heap1, 0, 100, heap2, 0, 100);
+    int directResult = ByteBufferUtils.findCommonPrefix(direct1, 0, 100, direct2, 0, 100);
+    int mixedResult1 = ByteBufferUtils.findCommonPrefix(heap1, 0, 100, direct2, 0, 100);
+    int mixedResult2 = ByteBufferUtils.findCommonPrefix(direct1, 0, 100, heap2, 0, 100);
+
+    assertEquals(heapResult, directResult);
+    assertEquals(heapResult, mixedResult1);
+    assertEquals(heapResult, mixedResult2);
+    assertEquals(42, heapResult);
+  }
+
+  @Test
+  public void testCommonPrefixerPartialMatches() {
+    ByteBuffer heap = ByteBuffer.allocate(64);
+    ByteBuffer direct = ByteBuffer.allocateDirect(64);
+    byte[] array = new byte[64];
+
+    for (int i = 0; i < 32; i++) {
+      heap.put(i, (byte) i);
+      direct.put(i, (byte) i);
+      array[i] = (byte) i;
+    }
+    for (int i = 32; i < 64; i++) {
+      heap.put(i, (byte) (i + 100));
+      direct.put(i, (byte) (i + 100));
+      array[i] = (byte) (i + 100);
+    }
+
+    ByteBuffer heap2 = ByteBuffer.allocate(64);
+    ByteBuffer direct2 = ByteBuffer.allocateDirect(64);
+    byte[] array2 = new byte[64];
+
+    for (int i = 0; i < 32; i++) {
+      heap2.put(i, (byte) i);
+      direct2.put(i, (byte) i);
+      array2[i] = (byte) i;
+    }
+    for (int i = 32; i < 64; i++) {
+      heap2.put(i, (byte) (i + 200));
+      direct2.put(i, (byte) (i + 200));
+      array2[i] = (byte) (i + 200);
+    }
+
+    assertEquals(32, ByteBufferUtils.findCommonPrefix(heap, 0, 64, heap2, 0, 64));
+    assertEquals(32, ByteBufferUtils.findCommonPrefix(direct, 0, 64, direct2, 0, 64));
+    assertEquals(32, ByteBufferUtils.findCommonPrefix(heap, 0, 64, array2, 0, 64));
+    assertEquals(32, ByteBufferUtils.findCommonPrefix(direct, 0, 64, array2, 0, 64));
+  }
+
   // Below are utility methods invoked from test methods
   private static void testCompressedInt(int value) throws IOException {
     ByteArrayOutputStream bos = new ByteArrayOutputStream();
diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/BytesTestBase.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/BytesTestBase.java
index 96df8bc3939..098a5e95916 100644
--- a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/BytesTestBase.java
+++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/BytesTestBase.java
@@ -575,4 +575,345 @@ public class BytesTestBase {
     assertEquals(2, Bytes.findCommonPrefix(hellohello, hellohellohi, hellohello.length,
       hellohellohi.length, 0, 0));
   }
+
+  @Test
+  public void testConverterToShort() {
+    byte[] array = new byte[20];
+
+    short[] testValues =
+      { 0, 1, -1, Short.MIN_VALUE, Short.MAX_VALUE, 127, -128, 255, -255, 1000, -1000 };
+
+    for (short value : testValues) {
+      Arrays.fill(array, (byte) 0);
+
+      Bytes.putShort(array, 0, value);
+      Bytes.putShort(array, 5, value);
+      Bytes.putShort(array, 10, value);
+
+      assertEquals(value, Bytes.toShort(array, 0));
+      assertEquals(value, Bytes.toShort(array, 5));
+      assertEquals(value, Bytes.toShort(array, 10));
+    }
+  }
+
+  @Test
+  public void testConverterToInt() {
+    byte[] array = new byte[20];
+
+    int[] testValues = { 0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE, 127, -128, 65535, -65535,
+      1000000, -1000000 };
+
+    for (int value : testValues) {
+      Arrays.fill(array, (byte) 0);
+
+      Bytes.putInt(array, 0, value);
+      Bytes.putInt(array, 4, value);
+      Bytes.putInt(array, 12, value);
+
+      assertEquals(value, Bytes.toInt(array, 0));
+      assertEquals(value, Bytes.toInt(array, 4));
+      assertEquals(value, Bytes.toInt(array, 12));
+    }
+  }
+
+  @Test
+  public void testConverterToLong() {
+    byte[] array = new byte[32];
+
+    long[] testValues = { 0L, 1L, -1L, Long.MIN_VALUE, Long.MAX_VALUE, 127L, -128L, 65535L, -65535L,
+      Integer.MAX_VALUE + 1L, Integer.MIN_VALUE - 1L, 1000000000000L, -1000000000000L };
+
+    for (long value : testValues) {
+      Arrays.fill(array, (byte) 0);
+
+      Bytes.putLong(array, 0, value);
+      Bytes.putLong(array, 8, value);
+      Bytes.putLong(array, 16, value);
+
+      assertEquals(value, Bytes.toLong(array, 0));
+      assertEquals(value, Bytes.toLong(array, 8));
+      assertEquals(value, Bytes.toLong(array, 16));
+    }
+  }
+
+  @Test
+  public void testConverterPutShort() {
+    byte[] array = new byte[20];
+
+    short[] testValues =
+      { 0, 1, -1, Short.MIN_VALUE, Short.MAX_VALUE, 127, -128, 255, -255, 1000, -1000 };
+
+    for (short value : testValues) {
+      Arrays.fill(array, (byte) 0);
+
+      int newIndex = Bytes.putShort(array, 0, value);
+      assertEquals(Short.BYTES, newIndex);
+      assertEquals(value, Bytes.toShort(array, 0));
+
+      newIndex = Bytes.putShort(array, 5, (short) (value + 1));
+      assertEquals(5 + Short.BYTES, newIndex);
+      assertEquals((short) (value + 1), Bytes.toShort(array, 5));
+    }
+  }
+
+  @Test
+  public void testConverterPutInt() {
+    byte[] array = new byte[20];
+
+    int[] testValues = { 0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE, 127, -128, 65535, -65535,
+      1000000, -1000000 };
+
+    for (int value : testValues) {
+      Arrays.fill(array, (byte) 0);
+
+      int newIndex = Bytes.putInt(array, 0, value);
+      assertEquals(Integer.BYTES, newIndex);
+      assertEquals(value, Bytes.toInt(array, 0));
+
+      newIndex = Bytes.putInt(array, 5, value + 1);
+      assertEquals(5 + Integer.BYTES, newIndex);
+      assertEquals(value + 1, Bytes.toInt(array, 5));
+    }
+  }
+
+  @Test
+  public void testConverterPutLong() {
+    byte[] array = new byte[32];
+
+    long[] testValues = { 0L, 1L, -1L, Long.MIN_VALUE, Long.MAX_VALUE, 127L, -128L, 65535L, -65535L,
+      Integer.MAX_VALUE + 1L, Integer.MIN_VALUE - 1L, 1000000000000L, -1000000000000L };
+
+    for (long value : testValues) {
+      Arrays.fill(array, (byte) 0);
+
+      int newIndex = Bytes.putLong(array, 0, value);
+      assertEquals(Long.BYTES, newIndex);
+      assertEquals(value, Bytes.toLong(array, 0));
+
+      newIndex = Bytes.putLong(array, 8, value + 1);
+      assertEquals(8 + Long.BYTES, newIndex);
+      assertEquals(value + 1, Bytes.toLong(array, 8));
+    }
+  }
+
+  @Test
+  public void testConverterRoundTrip() {
+    byte[] array = new byte[50];
+
+    short shortValue = 12345;
+    int intValue = 200000;
+    long longValue = 3000000000L;
+
+    int offset = 0;
+    offset = Bytes.putShort(array, offset, shortValue);
+    offset = Bytes.putInt(array, offset, intValue);
+    offset = Bytes.putLong(array, offset, longValue);
+    offset = Bytes.putShort(array, offset, Short.MIN_VALUE);
+    offset = Bytes.putInt(array, offset, Integer.MAX_VALUE);
+    offset = Bytes.putLong(array, offset, Long.MIN_VALUE);
+
+    assertEquals(28, offset);
+
+    assertEquals(shortValue, Bytes.toShort(array, 0));
+    assertEquals(intValue, Bytes.toInt(array, 2));
+    assertEquals(longValue, Bytes.toLong(array, 6));
+    assertEquals(Short.MIN_VALUE, Bytes.toShort(array, 14));
+    assertEquals(Integer.MAX_VALUE, Bytes.toInt(array, 16));
+    assertEquals(Long.MIN_VALUE, Bytes.toLong(array, 20));
+  }
+
+  @Test
+  public void testConverterBigEndianByteOrder() {
+    byte[] array = new byte[20];
+
+    Bytes.putInt(array, 0, 0x01020304);
+    assertEquals((byte) 0x01, array[0]);
+    assertEquals((byte) 0x02, array[1]);
+    assertEquals((byte) 0x03, array[2]);
+    assertEquals((byte) 0x04, array[3]);
+
+    Bytes.putShort(array, 0, (short) 0x0102);
+    assertEquals((byte) 0x01, array[0]);
+    assertEquals((byte) 0x02, array[1]);
+
+    Bytes.putLong(array, 0, 0x0102030405060708L);
+    assertEquals((byte) 0x01, array[0]);
+    assertEquals((byte) 0x02, array[1]);
+    assertEquals((byte) 0x03, array[2]);
+    assertEquals((byte) 0x04, array[3]);
+    assertEquals((byte) 0x05, array[4]);
+    assertEquals((byte) 0x06, array[5]);
+    assertEquals((byte) 0x07, array[6]);
+    assertEquals((byte) 0x08, array[7]);
+  }
+
+  @Test
+  public void testCommonPrefixerIdenticalSequences() {
+    byte[] array1 = new byte[100];
+    byte[] array2 = new byte[100];
+
+    for (int i = 0; i < 100; i++) {
+      array1[i] = (byte) i;
+      array2[i] = (byte) i;
+    }
+
+    assertEquals(100, Bytes.findCommonPrefix(array1, array2, array1.length, array2.length, 0, 0));
+  }
+
+  @Test
+  public void testCommonPrefixerEmptySequences() {
+    byte[] array1 = new byte[10];
+    byte[] array2 = new byte[10];
+
+    assertEquals(0, Bytes.findCommonPrefix(array1, array2, 0, 0, 0, 0));
+  }
+
+  @Test
+  public void testCommonPrefixerDifferentLengths() {
+    byte[] shortArray = new byte[50];
+    byte[] longArray = new byte[100];
+
+    for (int i = 0; i < 100; i++) {
+      byte value = (byte) i;
+      if (i < 50) {
+        shortArray[i] = value;
+      }
+      longArray[i] = value;
+    }
+
+    assertEquals(50, Bytes.findCommonPrefix(longArray, shortArray, 100, 50, 0, 0));
+    assertEquals(50, Bytes.findCommonPrefix(shortArray, longArray, 50, 100, 0, 0));
+  }
+
+  @Test
+  public void testCommonPrefixerDifferenceAtStrideBoundaries() {
+    byte[] array1 = new byte[100];
+    byte[] array2 = new byte[100];
+
+    int[] boundaryPositions = { 0, 1, 7, 8, 9, 15, 16, 17, 23, 24, 31, 32 };
+
+    for (int diffPos : boundaryPositions) {
+      Arrays.fill(array1, (byte) 5);
+      Arrays.fill(array2, (byte) 5);
+
+      array2[diffPos] = (byte) 99;
+
+      assertEquals(diffPos, Bytes.findCommonPrefix(array1, array2, 100, 100, 0, 0));
+    }
+  }
+
+  @Test
+  public void testCommonPrefixerWithOffsets() {
+    byte[] array = new byte[120];
+
+    for (int i = 0; i < 120; i++) {
+      array[i] = (byte) 42;
+    }
+
+    array[70] = (byte) 99;
+
+    assertEquals(50, Bytes.findCommonPrefix(array, array, 60, 60, 10, 20));
+  }
+
+  @Test
+  public void testCommonPrefixerSingleByteDifferences() {
+    byte[] array1 = new byte[50];
+    byte[] array2 = new byte[50];
+
+    for (int diffPos = 0; diffPos < 50; diffPos++) {
+      Arrays.fill(array1, (byte) 10);
+      Arrays.fill(array2, (byte) 10);
+
+      array2[diffPos] = (byte) 20;
+
+      assertEquals(diffPos, Bytes.findCommonPrefix(array1, array2, 50, 50, 0, 0));
+    }
+  }
+
+  @Test
+  public void testCommonPrefixerEpilogueBytes() {
+    for (int length = 1; length <= 15; length++) {
+      byte[] array1 = new byte[length];
+      byte[] array2 = new byte[length];
+
+      for (int i = 0; i < length; i++) {
+        array1[i] = (byte) i;
+        array2[i] = (byte) i;
+      }
+
+      assertEquals(length, Bytes.findCommonPrefix(array1, array2, length, length, 0, 0));
+    }
+  }
+
+  @Test
+  public void testCommonPrefixerEpilogueDifference() {
+    for (int length = 9; length <= 15; length++) {
+      for (int diffPos = 8; diffPos < length; diffPos++) {
+        byte[] array1 = new byte[length];
+        byte[] array2 = new byte[length];
+
+        for (int i = 0; i < length; i++) {
+          array1[i] = (byte) 5;
+          array2[i] = (byte) 5;
+        }
+
+        array2[diffPos] = (byte) 99;
+
+        assertEquals(diffPos, Bytes.findCommonPrefix(array1, array2, length, length, 0, 0));
+      }
+    }
+  }
+
+  @Test
+  public void testCommonPrefixerExtremeValues() {
+    byte[] array1 = new byte[50];
+    byte[] array2 = new byte[50];
+
+    byte[] extremeValues = { Byte.MIN_VALUE, Byte.MAX_VALUE, 0, -1, 1, 127, -128, (byte) 0xFF };
+
+    for (byte value : extremeValues) {
+      Arrays.fill(array1, value);
+      Arrays.fill(array2, value);
+
+      assertEquals(50, Bytes.findCommonPrefix(array1, array2, 50, 50, 0, 0));
+    }
+  }
+
+  @Test
+  public void testCommonPrefixerMultipleStrides() {
+    byte[] array1 = new byte[100];
+    byte[] array2 = new byte[100];
+
+    for (int i = 0; i < 100; i++) {
+      array1[i] = (byte) (i % 10);
+      array2[i] = (byte) (i % 10);
+    }
+
+    int[] diffPositions = { 72, 73, 74, 75, 76, 77, 78, 79, 80 };
+
+    for (int diffPos : diffPositions) {
+      array2[diffPos] = (byte) 99;
+
+      assertEquals(diffPos, Bytes.findCommonPrefix(array1, array2, 100, 100, 0, 0));
+
+      array2[diffPos] = (byte) (diffPos % 10);
+    }
+  }
+
+  @Test
+  public void testCommonPrefixerPartialMatches() {
+    byte[] array1 = new byte[64];
+    byte[] array2 = new byte[64];
+
+    for (int i = 0; i < 32; i++) {
+      array1[i] = (byte) i;
+      array2[i] = (byte) i;
+    }
+    for (int i = 32; i < 64; i++) {
+      array1[i] = (byte) (i + 100);
+      array2[i] = (byte) (i + 200);
+    }
+
+    assertEquals(32, Bytes.findCommonPrefix(array1, array2, 64, 64, 0, 0));
+  }
 }
diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestByteBufferUtilsWoUnsafe.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestByteBufferUtilsWoUnsafe.java
index b77cfe55dee..c937f0503bb 100644
--- a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestByteBufferUtilsWoUnsafe.java
+++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestByteBufferUtilsWoUnsafe.java
@@ -36,7 +36,6 @@ public class TestByteBufferUtilsWoUnsafe extends ByteBufferUtilsTestBase {
       mocked.when(HBasePlatformDependent::isUnsafeAvailable).thenReturn(false);
       mocked.when(HBasePlatformDependent::unaligned).thenReturn(false);
       assertFalse(ByteBufferUtils.UNSAFE_AVAIL);
-      assertFalse(ByteBufferUtils.UNSAFE_UNALIGNED);
     }
   }
 
diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytesWoUnsafe.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytesWoUnsafe.java
deleted file mode 100644
index 8aacab4b851..00000000000
--- a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestBytesWoUnsafe.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hbase.util;
-
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.mockito.Mockito.mockStatic;
-
-import org.apache.hadoop.hbase.testclassification.MiscTests;
-import org.apache.hadoop.hbase.testclassification.SmallTests;
-import org.apache.hadoop.hbase.unsafe.HBasePlatformDependent;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Tag;
-import org.mockito.MockedStatic;
-
-@Tag(MiscTests.TAG)
-@Tag(SmallTests.TAG)
-public class TestBytesWoUnsafe extends BytesTestBase {
-
-  @BeforeAll
-  public static void disableUnsafe() {
-    try (MockedStatic<HBasePlatformDependent> mocked = mockStatic(HBasePlatformDependent.class)) {
-      mocked.when(HBasePlatformDependent::unaligned).thenReturn(false);
-      assertFalse(Bytes.UNSAFE_UNALIGNED);
-    }
-  }
-}
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestFromClientSide3WoUnsafe.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestFromClientSide3WoUnsafe.java
index 70b2f3d5f29..7014f56b2ea 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestFromClientSide3WoUnsafe.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestFromClientSide3WoUnsafe.java
@@ -50,7 +50,6 @@ public class TestFromClientSide3WoUnsafe extends FromClientSideTest3 {
       mocked.when(HBasePlatformDependent::isUnsafeAvailable).thenReturn(false);
       mocked.when(HBasePlatformDependent::unaligned).thenReturn(false);
       assertFalse(ByteBufferUtils.UNSAFE_AVAIL);
-      assertFalse(ByteBufferUtils.UNSAFE_UNALIGNED);
     }
     startCluster(MultiRowMutationEndpoint.class);
   }