Skip to content

Commit a9441df

Browse files
committed
HBASE-24654 Allow unset table's rsgroup
1 parent 047e061 commit a9441df

3 files changed

Lines changed: 52 additions & 0 deletions

File tree

hbase-client/src/main/java/org/apache/hadoop/hbase/client/TableDescriptorBuilder.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,11 @@ public TableDescriptorBuilder setRegionServerGroup(String group) {
572572
return this;
573573
}
574574

575+
public TableDescriptorBuilder clearRegionServerGroup() {
576+
desc.removeValue(RSGROUP_KEY);
577+
return this;
578+
}
579+
575580
public TableDescriptor build() {
576581
return new ModifyableTableDescriptor(desc);
577582
}

hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestTableDescriptorBuilder.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import static org.junit.Assert.assertEquals;
2121
import static org.junit.Assert.assertFalse;
22+
import static org.junit.Assert.assertNull;
2223
import static org.junit.Assert.assertTrue;
2324
import static org.junit.Assert.fail;
2425

@@ -27,6 +28,7 @@
2728
import org.apache.hadoop.hbase.HBaseClassTestRule;
2829
import org.apache.hadoop.hbase.TableName;
2930
import org.apache.hadoop.hbase.exceptions.DeserializationException;
31+
import org.apache.hadoop.hbase.rsgroup.RSGroupInfo;
3032
import org.apache.hadoop.hbase.testclassification.MiscTests;
3133
import org.apache.hadoop.hbase.testclassification.SmallTests;
3234
import org.apache.hadoop.hbase.util.BuilderStyleTest;
@@ -291,4 +293,14 @@ public void testStringCustomizedValues() {
291293
"{TABLE_ATTRIBUTES => {DURABILITY => 'ASYNC_WAL'}}, {NAME => 'cf', BLOCKSIZE => '1000'}",
292294
htd.toStringCustomizedValues());
293295
}
296+
297+
@Test
298+
public void testGetSetRegionServerGroup() {
299+
String groupName = name.getMethodName();
300+
TableDescriptor htd = TableDescriptorBuilder.newBuilder(TableName.valueOf(name.getMethodName()))
301+
.setRegionServerGroup(groupName).build();
302+
assertEquals(htd.getValue(RSGroupInfo.TABLE_DESC_PROP_GROUP), groupName);
303+
htd = TableDescriptorBuilder.newBuilder(htd).clearRegionServerGroup().build();
304+
assertNull(htd.getValue(RSGroupInfo.TABLE_DESC_PROP_GROUP));
305+
}
294306
}

hbase-server/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsAdmin1.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -586,4 +586,39 @@ public void testRenameRSGroupConstraints() throws Exception {
586586
}
587587

588588
}
589+
590+
@Test
591+
public void testTableConstraint() throws Exception {
592+
String prefix = name.getMethodName();
593+
String ns = prefix + "_ns";
594+
TableName tableName = TableName.valueOf(ns + ":" + "t");
595+
String nsGroup = prefix + "_nsg";
596+
String tableGroup = prefix + "_tg";
597+
addGroup(nsGroup, 1);
598+
addGroup(tableGroup, 1);
599+
ADMIN.createNamespace(NamespaceDescriptor.create(ns).build());
600+
TEST_UTIL.createTable(tableName, "C");
601+
TEST_UTIL.waitTableAvailable(tableName);
602+
assertEquals(ADMIN.getRSGroup(tableName).getName(), RSGroupInfo.DEFAULT_GROUP);
603+
// set table's rsgroup
604+
TableDescriptor td = TableDescriptorBuilder.newBuilder(ADMIN.getDescriptor(tableName))
605+
.setRegionServerGroup(tableGroup).build();
606+
ADMIN.modifyTable(td);
607+
TEST_UTIL.waitUntilNoRegionsInTransition();
608+
assertEquals(ADMIN.getRSGroup(tableName).getName(), tableGroup);
609+
// set namespace's rsgroup
610+
NamespaceDescriptor nd = NamespaceDescriptor.create(ADMIN.getNamespaceDescriptor(ns))
611+
.addConfiguration(RSGroupInfo.NAMESPACE_DESC_PROP_GROUP, nsGroup).build();
612+
ADMIN.modifyNamespace(nd);
613+
assertEquals(ADMIN.getRSGroup(tableName).getName(), tableGroup);
614+
// clear table's rsgroup
615+
td = TableDescriptorBuilder.newBuilder(ADMIN.getDescriptor(tableName))
616+
.clearRegionServerGroup().build();
617+
ADMIN.modifyTable(td);
618+
TEST_UTIL.waitUntilNoRegionsInTransition();
619+
assertEquals(ADMIN.getRSGroup(tableName).getName(), nsGroup);
620+
621+
TEST_UTIL.deleteTable(tableName);
622+
ADMIN.deleteNamespace(ns);
623+
}
589624
}

0 commit comments

Comments
 (0)