diff --git a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java index 65053b8..3e6ce13 100644 --- a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java +++ b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java @@ -203,9 +203,19 @@ public class RSGroupBasedLoadBalancer implements RSGroupableBalancer { for (RegionInfo region : regionList) { currentAssignmentMap.put(region, regions.get(region)); } - if(candidateList.size() > 0) { + if (candidateList.size() > 0) { assignments.putAll(this.internalBalancer.retainAssignment( currentAssignmentMap, candidateList)); + } else { + // need to assign system table even if its group is null + for (RegionInfo ri : regionList) { + if (ri.getTable().isSystemTable()) { + assignments.putAll(this.internalBalancer.retainAssignment( + currentAssignmentMap, servers)); + LOG.debug("Assign system table " + ri.getTable()); + break; + } + } } } diff --git a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsWithACL.java b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsWithACL.java index c5e4619..1bff95e 100644 --- a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsWithACL.java +++ b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsWithACL.java @@ -38,6 +38,7 @@ import org.apache.hadoop.hbase.security.access.AccessControlLists; import org.apache.hadoop.hbase.security.access.Permission; import org.apache.hadoop.hbase.security.access.SecureTestUtil; import org.apache.hadoop.hbase.security.access.TableAuthManager; +import org.apache.hadoop.hbase.testclassification.MediumTests; import org.apache.hadoop.hbase.testclassification.SecurityTests; import org.apache.hadoop.hbase.util.Bytes; import org.junit.AfterClass; @@ -51,7 +52,7 @@ import org.slf4j.LoggerFactory; * Performs authorization checks for rsgroup operations, according to different * levels of authorized users. */ -@Category({SecurityTests.class}) +@Category({SecurityTests.class, MediumTests.class}) public class TestRSGroupsWithACL extends SecureTestUtil{ private static final Logger LOG = LoggerFactory.getLogger(TestRSGroupsWithACL.class); private static TableName TEST_TABLE = TableName.valueOf("testtable1"); @@ -201,7 +202,7 @@ public class TestRSGroupsWithACL extends SecureTestUtil{ String currentCoprocessors = conf.get(CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY); String coprocessors = RSGroupAdminEndpoint.class.getName(); if (currentCoprocessors != null) { - coprocessors += "," + currentCoprocessors; + coprocessors = currentCoprocessors + "," + coprocessors; } conf.set(CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY, coprocessors); conf.set(HConstants.HBASE_MASTER_LOADBALANCER_CLASS,