1fanwang opened a new pull request, #8570: URL: https://github.com/apache/hbase/pull/8570
The async client can update region replica locations one at a time after a move. Before this change, caching replicas 0, 1, and 2 separately left only one replica in the cache, so later lookups for the sibling replicas missed. Single-location updates now use a synchronized path that replaces only the matching replica. Different primary regions still use the existing replacement path, and complete metadata responses still control the replica-list length. Jira: https://issues.apache.org/jira/browse/HBASE-30165 ## Verification The regression exercises `AsyncNonMetaRegionLocator.addLocationToCache` in ascending and descending replica order. It also checks that a different primary region with the same start key replaces stale siblings. <details> <summary>Commands and raw output</summary> Before, on `d11cafefbcbe8b356aaede41fcf9b153dbf2c2bc` with only the regression test applied: ```console $ JAVA_HOME=$(/usr/libexec/java_home -v 17) mvn -pl hbase-client -Dtest=TestAsyncRegionLocationCache test [ERROR] Tests run: 2, Failures: 1, Errors: 0, Skipped: 0 [ERROR] TestAsyncRegionLocationCache.testAddingIndividualReplicasPreservesSiblings:55 [0, 1, 2] ==> expected: <3> but was: <1> [INFO] BUILD FAILURE ``` After: ```console $ JAVA_HOME=$(/usr/libexec/java_home -v 17) mvn -pl hbase-client -Dtest=TestAsyncRegionLocationCache test [INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 [INFO] BUILD SUCCESS ``` The only full-module failure is also present on unmodified master: ```console $ JAVA_HOME=$(/usr/libexec/java_home -v 17) mvn -pl hbase-client test [ERROR] TestRegistryEndpointsRefresher.testDurationBetweenRefreshes:121 40 ==> expected: <true> but was: <false> [ERROR] Tests run: 309, Failures: 1, Errors: 0, Skipped: 0 $ git checkout d11cafefbcbe8b356aaede41fcf9b153dbf2c2bc $ JAVA_HOME=$(/usr/libexec/java_home -v 17) mvn -pl hbase-client -Dtest=TestRegistryEndpointsRefresher#testDurationBetweenRefreshes test [ERROR] TestRegistryEndpointsRefresher.testDurationBetweenRefreshes:121 36 ==> expected: <true> but was: <false> [INFO] BUILD FAILURE ``` </details> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
