This is an automated email from the ASF dual-hosted git repository.
rmattingly pushed a commit to branch branch-3
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-3 by this push:
new 796232803be HBASE-29075 Balancer conditionals should support system
table isolation (#6746) (#6762)
796232803be is described below
commit 796232803be3704ed9a90385aac66a765808068a
Author: Ray Mattingly <[email protected]>
AuthorDate: Fri Mar 7 08:26:51 2025 -0500
HBASE-29075 Balancer conditionals should support system table isolation
(#6746) (#6762)
Signed-off-by: Nick Dimiduk <[email protected]>
Co-authored-by: Ray Mattingly <[email protected]>
---
.../master/balancer/BalancerConditionals.java | 14 +++++
.../balancer/DistributeReplicasConditional.java | 6 +-
.../balancer/MetaTableIsolationConditional.java | 3 +-
.../balancer/SlopFixingCandidateGenerator.java | 5 +-
...=> SystemTableIsolationCandidateGenerator.java} | 24 ++++----
...l.java => SystemTableIsolationConditional.java} | 22 +++++---
.../master/balancer/TableIsolationConditional.java | 9 +--
.../balancer/CandidateGeneratorTestUtil.java | 9 ++-
...LargeClusterBalancingSystemTableIsolation.java} | 66 ++++++++--------------
...ancingTableIsolationAndReplicaDistribution.java | 31 +++++-----
10 files changed, 100 insertions(+), 89 deletions(-)
diff --git
a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/BalancerConditionals.java
b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/BalancerConditionals.java
index a79d2bca132..bbd85e5c1ef 100644
---
a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/BalancerConditionals.java
+++
b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/BalancerConditionals.java
@@ -61,6 +61,10 @@ final class BalancerConditionals implements Configurable {
"hbase.master.balancer.stochastic.conditionals.isolateMetaTable";
public static final boolean ISOLATE_META_TABLE_DEFAULT = false;
+ public static final String ISOLATE_SYSTEM_TABLES_KEY =
+ "hbase.master.balancer.stochastic.conditionals.isolateSystemTables";
+ public static final boolean ISOLATE_SYSTEM_TABLES_DEFAULT = false;
+
public static final String ADDITIONAL_CONDITIONALS_KEY =
"hbase.master.balancer.stochastic.additionalConditionals";
@@ -95,6 +99,10 @@ final class BalancerConditionals implements Configurable {
}
boolean isTableIsolationEnabled() {
+ return
conditionalClasses.stream().anyMatch(TableIsolationConditional.class::isAssignableFrom);
+ }
+
+ boolean isMetaTableIsolationEnabled() {
return conditionalClasses.contains(MetaTableIsolationConditional.class);
}
@@ -207,6 +215,12 @@ final class BalancerConditionals implements Configurable {
conditionalClasses.add(MetaTableIsolationConditional.class);
}
+ boolean isolateSystemTables =
+ conf.getBoolean(ISOLATE_SYSTEM_TABLES_KEY,
ISOLATE_SYSTEM_TABLES_DEFAULT);
+ if (isolateSystemTables) {
+ conditionalClasses.add(SystemTableIsolationConditional.class);
+ }
+
Class<?>[] classes = conf.getClasses(ADDITIONAL_CONDITIONALS_KEY);
for (Class<?> clazz : classes) {
if (!RegionPlanConditional.class.isAssignableFrom(clazz)) {
diff --git
a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/DistributeReplicasConditional.java
b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/DistributeReplicasConditional.java
index 2cd27615e5f..e99c0e93a15 100644
---
a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/DistributeReplicasConditional.java
+++
b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/DistributeReplicasConditional.java
@@ -19,7 +19,6 @@ package org.apache.hadoop.hbase.master.balancer;
import java.util.List;
import java.util.Set;
-import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.RegionInfo;
import org.apache.hadoop.hbase.master.RegionPlan;
import org.apache.hadoop.hbase.master.balancer.replicas.ReplicaKey;
@@ -41,12 +40,9 @@ public class DistributeReplicasConditional extends
RegionPlanConditional {
public DistributeReplicasConditional(BalancerConditionals
balancerConditionals,
BalancerClusterState cluster) {
super(balancerConditionals.getConf(), cluster);
- Configuration conf = balancerConditionals.getConf();
- float slop =
- conf.getFloat(BaseLoadBalancer.REGIONS_SLOP_KEY,
BaseLoadBalancer.REGIONS_SLOP_DEFAULT);
this.candidateGenerators =
ImmutableList.of(new
DistributeReplicasCandidateGenerator(balancerConditionals),
- new SlopFixingCandidateGenerator(balancerConditionals, slop));
+ new SlopFixingCandidateGenerator(balancerConditionals));
}
@Override
diff --git
a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/MetaTableIsolationConditional.java
b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/MetaTableIsolationConditional.java
index 732693c44f3..5617468457c 100644
---
a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/MetaTableIsolationConditional.java
+++
b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/MetaTableIsolationConditional.java
@@ -27,7 +27,8 @@ class MetaTableIsolationConditional extends
TableIsolationConditional {
public MetaTableIsolationConditional(BalancerConditionals
balancerConditionals,
BalancerClusterState cluster) {
- super(balancerConditionals, cluster);
+ super(new MetaTableIsolationCandidateGenerator(balancerConditionals),
balancerConditionals,
+ cluster);
}
@Override
diff --git
a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/SlopFixingCandidateGenerator.java
b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/SlopFixingCandidateGenerator.java
index b1ea1de8d2b..f78e1573b41 100644
---
a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/SlopFixingCandidateGenerator.java
+++
b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/SlopFixingCandidateGenerator.java
@@ -37,9 +37,10 @@ final class SlopFixingCandidateGenerator extends
RegionPlanConditionalCandidateG
private final float slop;
- SlopFixingCandidateGenerator(BalancerConditionals balancerConditionals,
float slop) {
+ SlopFixingCandidateGenerator(BalancerConditionals balancerConditionals) {
super(balancerConditionals);
- this.slop = slop;
+ this.slop =
balancerConditionals.getConf().getFloat(BaseLoadBalancer.REGIONS_SLOP_KEY,
+ BaseLoadBalancer.REGIONS_SLOP_DEFAULT);
}
@Override
diff --git
a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/MetaTableIsolationConditional.java
b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/SystemTableIsolationCandidateGenerator.java
similarity index 57%
copy from
hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/MetaTableIsolationConditional.java
copy to
hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/SystemTableIsolationCandidateGenerator.java
index 732693c44f3..7ce8ff20296 100644
---
a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/MetaTableIsolationConditional.java
+++
b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/SystemTableIsolationCandidateGenerator.java
@@ -18,20 +18,24 @@
package org.apache.hadoop.hbase.master.balancer;
import org.apache.hadoop.hbase.client.RegionInfo;
+import org.apache.yetus.audience.InterfaceAudience;
-/**
- * If enabled, this class will help the balancer ensure that the meta table
lives on its own
- * RegionServer. Configure this via {@link
BalancerConditionals#ISOLATE_META_TABLE_KEY}
- */
-class MetaTableIsolationConditional extends TableIsolationConditional {
[email protected]
+public class SystemTableIsolationCandidateGenerator extends
TableIsolationCandidateGenerator {
+
+ private final BalancerConditionals balancerConditionals;
- public MetaTableIsolationConditional(BalancerConditionals
balancerConditionals,
- BalancerClusterState cluster) {
- super(balancerConditionals, cluster);
+ SystemTableIsolationCandidateGenerator(BalancerConditionals
balancerConditionals) {
+ super(balancerConditionals);
+ this.balancerConditionals = balancerConditionals;
}
@Override
- boolean isRegionToIsolate(RegionInfo regionInfo) {
- return regionInfo.isMetaRegion();
+ boolean shouldBeIsolated(RegionInfo regionInfo) {
+ if (balancerConditionals.isMetaTableIsolationEnabled() &&
regionInfo.isMetaRegion()) {
+ // If meta isolation is enabled, we can ignore meta regions here
+ return false;
+ }
+ return regionInfo.getTable().isSystemTable();
}
}
diff --git
a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/MetaTableIsolationConditional.java
b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/SystemTableIsolationConditional.java
similarity index 59%
copy from
hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/MetaTableIsolationConditional.java
copy to
hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/SystemTableIsolationConditional.java
index 732693c44f3..b5734b82faf 100644
---
a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/MetaTableIsolationConditional.java
+++
b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/SystemTableIsolationConditional.java
@@ -18,20 +18,26 @@
package org.apache.hadoop.hbase.master.balancer;
import org.apache.hadoop.hbase.client.RegionInfo;
+import org.apache.yetus.audience.InterfaceAudience;
-/**
- * If enabled, this class will help the balancer ensure that the meta table
lives on its own
- * RegionServer. Configure this via {@link
BalancerConditionals#ISOLATE_META_TABLE_KEY}
- */
-class MetaTableIsolationConditional extends TableIsolationConditional {
[email protected]
+public class SystemTableIsolationConditional extends TableIsolationConditional
{
+
+ private final BalancerConditionals balancerConditionals;
- public MetaTableIsolationConditional(BalancerConditionals
balancerConditionals,
+ SystemTableIsolationConditional(BalancerConditionals balancerConditionals,
BalancerClusterState cluster) {
- super(balancerConditionals, cluster);
+ super(new SystemTableIsolationCandidateGenerator(balancerConditionals),
balancerConditionals,
+ cluster);
+ this.balancerConditionals = balancerConditionals;
}
@Override
boolean isRegionToIsolate(RegionInfo regionInfo) {
- return regionInfo.isMetaRegion();
+ if (balancerConditionals.isMetaTableIsolationEnabled() &&
regionInfo.isMetaRegion()) {
+ // If meta isolation is enabled, we can ignore meta regions here
+ return false;
+ }
+ return regionInfo.getTable().isSystemTable();
}
}
diff --git
a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/TableIsolationConditional.java
b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/TableIsolationConditional.java
index 9e5a42abfd3..1b8de36552e 100644
---
a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/TableIsolationConditional.java
+++
b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/TableIsolationConditional.java
@@ -26,15 +26,12 @@ abstract class TableIsolationConditional extends
RegionPlanConditional {
private final List<RegionPlanConditionalCandidateGenerator>
candidateGenerators;
- TableIsolationConditional(BalancerConditionals balancerConditionals,
- BalancerClusterState cluster) {
+ TableIsolationConditional(TableIsolationCandidateGenerator generator,
+ BalancerConditionals balancerConditionals, BalancerClusterState cluster) {
super(balancerConditionals.getConf(), cluster);
- float slop =
balancerConditionals.getConf().getFloat(BaseLoadBalancer.REGIONS_SLOP_KEY,
- BaseLoadBalancer.REGIONS_SLOP_DEFAULT);
this.candidateGenerators =
- List.of(new MetaTableIsolationCandidateGenerator(balancerConditionals),
- new SlopFixingCandidateGenerator(balancerConditionals, slop));
+ List.of(generator, new
SlopFixingCandidateGenerator(balancerConditionals));
}
abstract boolean isRegionToIsolate(RegionInfo regionInfo);
diff --git
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/CandidateGeneratorTestUtil.java
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/CandidateGeneratorTestUtil.java
index 3d621996a81..b7e7b5fa844 100644
---
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/CandidateGeneratorTestUtil.java
+++
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/CandidateGeneratorTestUtil.java
@@ -49,9 +49,16 @@ public final class CandidateGeneratorTestUtil {
static void runBalancerToExhaustion(Configuration conf,
Map<ServerName, List<RegionInfo>> serverToRegions,
Set<Function<BalancerClusterState, Boolean>> expectations, float
targetMaxBalancerCost) {
+ runBalancerToExhaustion(conf, serverToRegions, expectations,
targetMaxBalancerCost, 15000);
+ }
+
+ static void runBalancerToExhaustion(Configuration conf,
+ Map<ServerName, List<RegionInfo>> serverToRegions,
+ Set<Function<BalancerClusterState, Boolean>> expectations, float
targetMaxBalancerCost,
+ long maxRunningTime) {
// Do the full plan. We're testing with a lot of regions
conf.setBoolean("hbase.master.balancer.stochastic.runMaxSteps", true);
- conf.setLong(MAX_RUNNING_TIME_KEY, 15000);
+ conf.setLong(MAX_RUNNING_TIME_KEY, maxRunningTime);
conf.setFloat(MIN_COST_NEED_BALANCE_KEY, targetMaxBalancerCost);
diff --git
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingTableIsolationAndReplicaDistribution.java
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingSystemTableIsolation.java
similarity index 57%
copy from
hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingTableIsolationAndReplicaDistribution.java
copy to
hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingSystemTableIsolation.java
index 34522fdee01..cc3bacca0a4 100644
---
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingTableIsolationAndReplicaDistribution.java
+++
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingSystemTableIsolation.java
@@ -41,20 +41,20 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Category({ MediumTests.class, MasterTests.class })
-public class TestLargeClusterBalancingTableIsolationAndReplicaDistribution {
+public class TestLargeClusterBalancingSystemTableIsolation {
@ClassRule
- public static final HBaseClassTestRule CLASS_RULE = HBaseClassTestRule
-
.forClass(TestLargeClusterBalancingTableIsolationAndReplicaDistribution.class);
+ public static final HBaseClassTestRule CLASS_RULE =
+
HBaseClassTestRule.forClass(TestLargeClusterBalancingSystemTableIsolation.class);
private static final Logger LOG =
-
LoggerFactory.getLogger(TestLargeClusterBalancingTableIsolationAndReplicaDistribution.class);
+
LoggerFactory.getLogger(TestLargeClusterBalancingSystemTableIsolation.class);
+
private static final TableName SYSTEM_TABLE_NAME =
TableName.valueOf("hbase:system");
- private static final TableName NON_ISOLATED_TABLE_NAME =
TableName.valueOf("userTable");
+ private static final TableName NON_SYSTEM_TABLE_NAME =
TableName.valueOf("userTable");
private static final int NUM_SERVERS = 1000;
- private static final int NUM_REGIONS = 10_000;
- private static final int NUM_REPLICAS = 3;
+ private static final int NUM_REGIONS = 20_000;
private static final ServerName[] servers = new ServerName[NUM_SERVERS];
private static final Map<ServerName, List<RegionInfo>> serverToRegions = new
HashMap<>();
@@ -64,59 +64,39 @@ public class
TestLargeClusterBalancingTableIsolationAndReplicaDistribution {
// Initialize servers
for (int i = 0; i < NUM_SERVERS; i++) {
servers[i] = ServerName.valueOf("server" + i, i,
System.currentTimeMillis());
- serverToRegions.put(servers[i], new ArrayList<>());
}
- // Create primary regions and their replicas
+ // Create regions
List<RegionInfo> allRegions = new ArrayList<>();
for (int i = 0; i < NUM_REGIONS; i++) {
- TableName tableName;
- if (i < 1) {
- tableName = TableName.META_TABLE_NAME;
- } else if (i < 10) {
- tableName = SYSTEM_TABLE_NAME;
- } else {
- tableName = NON_ISOLATED_TABLE_NAME;
- }
-
- // Define startKey and endKey for the region
+ TableName tableName = i < 3 ? SYSTEM_TABLE_NAME : NON_SYSTEM_TABLE_NAME;
byte[] startKey = new byte[1];
startKey[0] = (byte) i;
byte[] endKey = new byte[1];
endKey[0] = (byte) (i + 1);
- // Create 3 replicas for each primary region
- for (int replicaId = 0; replicaId < NUM_REPLICAS; replicaId++) {
- RegionInfo regionInfo =
RegionInfoBuilder.newBuilder(tableName).setStartKey(startKey)
- .setEndKey(endKey).setReplicaId(replicaId).build();
- allRegions.add(regionInfo);
- }
+ RegionInfo regionInfo =
+
RegionInfoBuilder.newBuilder(tableName).setStartKey(startKey).setEndKey(endKey).build();
+ allRegions.add(regionInfo);
}
- // Assign all regions to one server
- for (RegionInfo regionInfo : allRegions) {
- serverToRegions.get(servers[0]).add(regionInfo);
+ // Assign all regions to the first server
+ serverToRegions.put(servers[0], new ArrayList<>(allRegions));
+ for (int i = 1; i < NUM_SERVERS; i++) {
+ serverToRegions.put(servers[i], new ArrayList<>());
}
}
@Test
- public void testTableIsolationAndReplicaDistribution() {
-
+ public void testSystemTableIsolation() {
Configuration conf = new Configuration(false);
- conf.setBoolean(BalancerConditionals.ISOLATE_META_TABLE_KEY, true);
-
DistributeReplicasTestConditional.enableConditionalReplicaDistributionForTest(conf);
-
- runBalancerToExhaustion(conf, serverToRegions,
- Set.of(this::isMetaTableIsolated,
CandidateGeneratorTestUtil::areAllReplicasDistributed),
- 10.0f);
- LOG.info("Meta table regions are successfully isolated, "
- + "and region replicas are appropriately distributed.");
+ conf.setBoolean(BalancerConditionals.ISOLATE_SYSTEM_TABLES_KEY, true);
+ runBalancerToExhaustion(conf, serverToRegions,
Set.of(this::isSystemTableIsolated), 10.0f);
+ LOG.info("Meta table regions are successfully isolated.");
}
- /**
- * Validates whether all meta table regions are isolated.
- */
- private boolean isMetaTableIsolated(BalancerClusterState cluster) {
- return isTableIsolated(cluster, TableName.META_TABLE_NAME, "Meta");
+ private boolean isSystemTableIsolated(BalancerClusterState cluster) {
+ return isTableIsolated(cluster, SYSTEM_TABLE_NAME, "System");
}
+
}
diff --git
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingTableIsolationAndReplicaDistribution.java
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingTableIsolationAndReplicaDistribution.java
index 34522fdee01..5fec827b9bf 100644
---
a/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingTableIsolationAndReplicaDistribution.java
+++
b/hbase-balancer/src/test/java/org/apache/hadoop/hbase/master/balancer/TestLargeClusterBalancingTableIsolationAndReplicaDistribution.java
@@ -24,6 +24,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Random;
import java.util.Set;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseClassTestRule;
@@ -52,8 +53,8 @@ public class
TestLargeClusterBalancingTableIsolationAndReplicaDistribution {
private static final TableName SYSTEM_TABLE_NAME =
TableName.valueOf("hbase:system");
private static final TableName NON_ISOLATED_TABLE_NAME =
TableName.valueOf("userTable");
- private static final int NUM_SERVERS = 1000;
- private static final int NUM_REGIONS = 10_000;
+ private static final int NUM_SERVERS = 500;
+ private static final int NUM_REGIONS = 2_500;
private static final int NUM_REPLICAS = 3;
private static final ServerName[] servers = new ServerName[NUM_SERVERS];
@@ -68,7 +69,6 @@ public class
TestLargeClusterBalancingTableIsolationAndReplicaDistribution {
}
// Create primary regions and their replicas
- List<RegionInfo> allRegions = new ArrayList<>();
for (int i = 0; i < NUM_REGIONS; i++) {
TableName tableName;
if (i < 1) {
@@ -85,30 +85,28 @@ public class
TestLargeClusterBalancingTableIsolationAndReplicaDistribution {
byte[] endKey = new byte[1];
endKey[0] = (byte) (i + 1);
+ Random random = new Random();
// Create 3 replicas for each primary region
for (int replicaId = 0; replicaId < NUM_REPLICAS; replicaId++) {
RegionInfo regionInfo =
RegionInfoBuilder.newBuilder(tableName).setStartKey(startKey)
.setEndKey(endKey).setReplicaId(replicaId).build();
- allRegions.add(regionInfo);
+ // Assign region to random server
+ int randomServer = random.nextInt(servers.length);
+ serverToRegions.get(servers[randomServer]).add(regionInfo);
}
}
-
- // Assign all regions to one server
- for (RegionInfo regionInfo : allRegions) {
- serverToRegions.get(servers[0]).add(regionInfo);
- }
}
@Test
public void testTableIsolationAndReplicaDistribution() {
-
Configuration conf = new Configuration(false);
conf.setBoolean(BalancerConditionals.ISOLATE_META_TABLE_KEY, true);
+ conf.setBoolean(BalancerConditionals.ISOLATE_SYSTEM_TABLES_KEY, true);
DistributeReplicasTestConditional.enableConditionalReplicaDistributionForTest(conf);
- runBalancerToExhaustion(conf, serverToRegions,
- Set.of(this::isMetaTableIsolated,
CandidateGeneratorTestUtil::areAllReplicasDistributed),
- 10.0f);
+ runBalancerToExhaustion(conf, serverToRegions,
Set.of(this::isMetaTableIsolated,
+ this::isSystemTableIsolated,
CandidateGeneratorTestUtil::areAllReplicasDistributed), 10.0f,
+ 60_000);
LOG.info("Meta table regions are successfully isolated, "
+ "and region replicas are appropriately distributed.");
}
@@ -119,4 +117,11 @@ public class
TestLargeClusterBalancingTableIsolationAndReplicaDistribution {
private boolean isMetaTableIsolated(BalancerClusterState cluster) {
return isTableIsolated(cluster, TableName.META_TABLE_NAME, "Meta");
}
+
+ /**
+ * Validates whether all meta table regions are isolated.
+ */
+ private boolean isSystemTableIsolated(BalancerClusterState cluster) {
+ return isTableIsolated(cluster, SYSTEM_TABLE_NAME, "System");
+ }
}