This is an automated email from the ASF dual-hosted git repository.
taklwu pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2 by this push:
new 6fb6269df62 HBASE-29724: Backport "HBASE-25334:
TestRSGroupsFallback.testFallback is flaky" into branch-2 and branch-2.6 (#7472)
6fb6269df62 is described below
commit 6fb6269df628d49e653bf793912eba80053c22ab
Author: Kevin Geiszler <[email protected]>
AuthorDate: Fri Nov 21 10:35:35 2025 -0800
HBASE-29724: Backport "HBASE-25334: TestRSGroupsFallback.testFallback is
flaky" into branch-2 and branch-2.6 (#7472)
Signed-off-by: Tak Lon (Stephen) Wu <[email protected]>
---
.../apache/hadoop/hbase/rsgroup/TestRSGroupsFallback.java | 13 +++++--------
.../java/org/apache/hadoop/hbase/master/ServerManager.java | 3 ++-
.../java/org/apache/hadoop/hbase/master/TestDeadServer.java | 9 ++++++---
3 files changed, 13 insertions(+), 12 deletions(-)
diff --git
a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsFallback.java
b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsFallback.java
index dee907fea62..12cc5df1cab 100644
---
a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsFallback.java
+++
b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsFallback.java
@@ -101,16 +101,13 @@ public class TestRSGroupsFallback extends
TestRSGroupsBase {
assertRegionsInGroup(tableName, FALLBACK_GROUP);
// add a new server to default group, regions move to default group
- JVMClusterUtil.RegionServerThread t =
- TEST_UTIL.getMiniHBaseCluster().startRegionServerAndWait(60000);
- Address startRSAddress = t.getRegionServer().getServerName().getAddress();
- TEST_UTIL.waitFor(3000,
- () ->
rsGroupAdmin.getRSGroupInfo(RSGroupInfo.DEFAULT_GROUP).containsServer(startRSAddress));
+ TEST_UTIL.getMiniHBaseCluster().startRegionServerAndWait(60000);
assertTrue(master.balance().isBalancerRan());
assertRegionsInGroup(tableName, RSGroupInfo.DEFAULT_GROUP);
// add a new server to test group, regions move back
- t = TEST_UTIL.getMiniHBaseCluster().startRegionServerAndWait(60000);
+ JVMClusterUtil.RegionServerThread t =
+ TEST_UTIL.getMiniHBaseCluster().startRegionServerAndWait(60000);
rsGroupAdmin.moveServers(
Collections.singleton(t.getRegionServer().getServerName().getAddress()),
groupName);
assertTrue(master.balance().isBalancerRan());
@@ -119,11 +116,11 @@ public class TestRSGroupsFallback extends
TestRSGroupsBase {
TEST_UTIL.deleteTable(tableName);
}
- private void assertRegionsInGroup(TableName tableName, String group) throws
IOException {
+ private void assertRegionsInGroup(TableName table, String group) throws
IOException {
ProcedureTestingUtility
.waitAllProcedures(TEST_UTIL.getMiniHBaseCluster().getMaster().getMasterProcedureExecutor());
RSGroupInfo groupInfo = rsGroupAdmin.getRSGroupInfo(group);
-
master.getAssignmentManager().getRegionStates().getRegionsOfTable(tableName).forEach(region
-> {
+
master.getAssignmentManager().getRegionStates().getRegionsOfTable(table).forEach(region
-> {
Address regionOnServer = master.getAssignmentManager().getRegionStates()
.getRegionAssignments().get(region).getAddress();
assertTrue(groupInfo.getServers().contains(regionOnServer));
diff --git
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
index 075fb78198f..443ef742f4f 100644
---
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
+++
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
@@ -549,7 +549,8 @@ public class ServerManager implements ConfigurationObserver
{
* @return true if any RS are being processed as dead, false if not
*/
public boolean areDeadServersInProgress() throws IOException {
- return master.getProcedures().stream().anyMatch(p -> p instanceof
ServerCrashProcedure);
+ return master.getProcedures().stream()
+ .anyMatch(p -> !p.isFinished() && p instanceof ServerCrashProcedure);
}
void letRegionServersShutdown() {
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java
index 94ac1823ac3..ecad5a19343 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java
@@ -20,7 +20,6 @@ package org.apache.hadoop.hbase.master;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import java.io.IOException;
import java.util.List;
import java.util.Set;
import org.apache.hadoop.hbase.HBaseClassTestRule;
@@ -93,15 +92,19 @@ public class TestDeadServer {
}
@Test
- public void testCrashProcedureReplay() throws IOException {
+ public void testCrashProcedureReplay() throws Exception {
HMaster master = TEST_UTIL.getHBaseCluster().getMaster();
final ProcedureExecutor<MasterProcedureEnv> pExecutor =
master.getMasterProcedureExecutor();
ServerCrashProcedure proc =
new ServerCrashProcedure(pExecutor.getEnvironment(), hostname123, false,
false);
+ pExecutor.stop();
ProcedureTestingUtility.submitAndWait(pExecutor, proc);
-
assertTrue(master.getServerManager().areDeadServersInProgress());
+
+ ProcedureTestingUtility.restart(pExecutor);
+ ProcedureTestingUtility.waitProcedure(pExecutor, proc);
+ assertFalse(master.getServerManager().areDeadServersInProgress());
}
@Test