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 da26ec4499f6..00ce7226054b 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 @@ -404,11 +404,14 @@ public void renameRSGroup(String oldName, String newName) throws IOException { if (oldName.equals(RSGroupInfo.DEFAULT_GROUP)) { throw new ConstraintException("Can't rename default rsgroup"); } + RSGroupInfo oldGroup = getRSGroup(oldName); + if (oldGroup == null) { + throw new ConstraintException("RSGroup " + oldName + " does not exist"); + } if (rsGroupMap.containsKey(newName)) { throw new ConstraintException("Group already exists: " + newName); } - RSGroupInfo oldGroup = getRSGroup(oldName); Map newGroupMap = Maps.newHashMap(rsGroupMap); newGroupMap.remove(oldName); RSGroupInfo newGroup = new RSGroupInfo(newName, 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 8a7da6c95f4a..18611b23b11b 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 @@ -558,6 +558,14 @@ public void testRenameRSGroupConstraints() throws Exception { assertNotNull(anotherGroup); assertEquals(1, anotherGroup.getServers().size()); + //Rename a non existing RSGroup + try { + rsGroupAdmin.renameRSGroup("nonExistingRSGroup", "newRSGroup1"); + fail("ConstraintException was expected."); + } catch (ConstraintException e) { + assertTrue(e.getMessage().contains("does not exist")); + } + //Rename to existing group try { rsGroupAdmin.renameRSGroup(oldGroup.getName(), anotherRSGroupName);