You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by vj...@apache.org on 2020/07/15 13:20:43 UTC
[hbase] branch branch-1 updated: HBASE-24721: rename_rsgroup
overwriting the existing rsgroup
This is an automated email from the ASF dual-hosted git repository.
vjasani pushed a commit to branch branch-1
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-1 by this push:
new f5080eb HBASE-24721: rename_rsgroup overwriting the existing rsgroup
f5080eb is described below
commit f5080eb9a604b6d22fdd4d48037aa66f0a824e85
Author: Mohammad Arshad <ar...@apache.org>
AuthorDate: Wed Jul 15 18:27:15 2020 +0530
HBASE-24721: rename_rsgroup overwriting the existing rsgroup
Closes #2066
Co-authored-by: Viraj Jasani <vj...@apache.org>
Signed-off-by: Reid Chan <re...@apache.org>
Signed-off-by: Viraj Jasani <vj...@apache.org>
---
.../hbase/rsgroup/RSGroupInfoManagerImpl.java | 3 ++
.../hadoop/hbase/rsgroup/TestRSGroupsAdmin1.java | 42 ++++++++++++++++++++++
2 files changed, 45 insertions(+)
diff --git a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java
index 008484d..fa04430 100644
--- a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java
+++ b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java
@@ -850,6 +850,9 @@ public class RSGroupInfoManagerImpl implements RSGroupInfoManager, ServerListene
if (oldName.equals(RSGroupInfo.DEFAULT_GROUP)) {
throw new ConstraintException("Can't rename default rsgroup");
}
+ if (rsGroupMap.containsKey(newName)) {
+ throw new ConstraintException("Group already exists: " + newName);
+ }
RSGroupInfo oldGroup = getRSGroup(oldName);
Map<String,RSGroupInfo> newGroupMap = Maps.newHashMap(rsGroupMap);
diff --git a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsAdmin1.java b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsAdmin1.java
index b95db7b..9cb09dc 100644
--- a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsAdmin1.java
+++ b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsAdmin1.java
@@ -21,6 +21,7 @@ package org.apache.hadoop.hbase.rsgroup;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -519,4 +520,45 @@ public class TestRSGroupsAdmin1 extends TestRSGroupsBase {
assertTrue(newgroup.containsTable(tb1));
assertEquals(normal.getName(), rsGroupAdmin.getRSGroupInfoOfTable(tb2).getName());
}
+
+ @Test
+ public void testRenameRSGroupConstraints() throws Exception {
+ // Add RSGroup, and assign 2 servers and a table to it.
+ String oldGroupName = "oldGroup";
+ RSGroupInfo oldGroup = addGroup(rsGroupAdmin, oldGroupName, 2);
+ oldGroup = rsGroupAdmin.getRSGroupInfo(oldGroup.getName());
+ assertNotNull(oldGroup);
+ assertEquals(2, oldGroup.getServers().size());
+
+ //Add another RSGroup
+ String anotherRSGroupName = "anotherRSGroup";
+ RSGroupInfo anotherGroup = addGroup(rsGroupAdmin, anotherRSGroupName, 1);
+ anotherGroup = rsGroupAdmin.getRSGroupInfo(anotherGroup.getName());
+ assertNotNull(anotherGroup);
+ assertEquals(1, anotherGroup.getServers().size());
+
+ //Rename to existing group
+ try {
+ rsGroupAdmin.renameRSGroup(oldGroup.getName(), anotherRSGroupName);
+ fail("ConstraintException was expected.");
+ } catch (ConstraintException e) {
+ assertTrue(e.getMessage().contains("Group already exists"));
+ }
+
+ //Rename default RSGroup
+ try {
+ rsGroupAdmin.renameRSGroup(RSGroupInfo.DEFAULT_GROUP, "newRSGroup2");
+ fail("ConstraintException was expected.");
+ } catch (ConstraintException e) {
+ //Do nothing
+ }
+
+ //Rename to default RSGroup
+ try {
+ rsGroupAdmin.renameRSGroup(oldGroup.getName(), RSGroupInfo.DEFAULT_GROUP);
+ fail("ConstraintException was expected.");
+ } catch (ConstraintException e) {
+ assertTrue(e.getMessage().contains("Group already exists"));
+ }
+ }
}