From 0e884eff01b8cd1a9e71451e1880f60a4cb346f8 Mon Sep 17 00:00:00 2001 From: xuqinya Date: Tue, 8 Jan 2019 14:35:42 +0800 Subject: [PATCH] HBASE-21693 rsgroup's bug when moving bogus tables --- .../hadoop/hbase/rsgroup/RSGroupAdminServer.java | 5 ++++- .../hadoop/hbase/rsgroup/TestRSGroupsAdmin1.java | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletions(-) diff --git a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupAdminServer.java b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupAdminServer.java index 720b193..ba631d4 100644 --- a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupAdminServer.java +++ b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupAdminServer.java @@ -396,7 +396,10 @@ public class RSGroupAdminServer implements RSGroupAdmin { for (TableName table : tables) { String srcGroup = rsGroupInfoManager.getRSGroupOfTable(table); - if(srcGroup != null && srcGroup.equals(targetGroup)) { + if (srcGroup == null) { + throw new ConstraintException( + "Source group is null for table "+table+" , table must exist."); + } else if (srcGroup != null && srcGroup.equals(targetGroup)) { throw new ConstraintException( "Source RSGroup " + srcGroup + " is same as target " + targetGroup + " RSGroup for table " + table); 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 89d1930..f93a00e 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 @@ -136,6 +136,15 @@ public class TestRSGroupsAdmin1 extends TestRSGroupsBase { } try { + String newGroupName = getGroupName(name.getMethodName()); + final RSGroupInfo newGroup = addGroup(newGroupName, 1); + rsGroupAdmin.moveTables(Sets.newHashSet(TableName.valueOf("bogustable")), newGroup.getName()); + fail("Expected move with bogus table to fail"); + } catch(ConstraintException|TableNotFoundException ex) { + //expected + } + + try { admin.setBalancerRunning(true,true); rsGroupAdmin.balanceRSGroup("bogus"); admin.setBalancerRunning(false,true); -- 1.7.1