You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zg...@apache.org on 2020/09/04 10:45:40 UTC

[hbase] branch branch-2 updated: HBASE-24759 Refuse to update configuration of default group (#2350)

This is an automated email from the ASF dual-hosted git repository.

zghao pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new c7b930a  HBASE-24759 Refuse to update configuration of default group (#2350)
c7b930a is described below

commit c7b930a9e8f107cac9dfb03b7669f6c27c9b6ba1
Author: XinSun <dd...@gmail.com>
AuthorDate: Fri Sep 4 18:45:12 2020 +0800

    HBASE-24759 Refuse to update configuration of default group (#2350)
    
    Signed-off-by: Guanghao Zhang <zg...@apache.org>
---
 .../org/apache/hadoop/hbase/rsgroup/RSGroupInfo.java    | 11 +++++++----
 .../hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java    |  6 ++++++
 .../apache/hadoop/hbase/rsgroup/TestRSGroupConfig.java  | 17 +++++++----------
 3 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfo.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfo.java
index 2fe2ba9..c96a80c 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfo.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupInfo.java
@@ -177,15 +177,18 @@ public class RSGroupInfo {
       return false;
     }
 
-    RSGroupInfo RSGroupInfo = (RSGroupInfo) o;
+    RSGroupInfo rsGroupInfo = (RSGroupInfo) o;
 
-    if (!name.equals(RSGroupInfo.name)) {
+    if (!name.equals(rsGroupInfo.name)) {
       return false;
     }
-    if (!servers.equals(RSGroupInfo.servers)) {
+    if (!servers.equals(rsGroupInfo.servers)) {
       return false;
     }
-    if (!tables.equals(RSGroupInfo.tables)) {
+    if (!tables.equals(rsGroupInfo.tables)) {
+      return false;
+    }
+    if (!configuration.equals(rsGroupInfo.configuration)) {
       return false;
     }
 
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 2b727ed..74e7bc9 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
@@ -459,6 +459,12 @@ final class RSGroupInfoManagerImpl implements RSGroupInfoManager {
   @Override
   public void updateRSGroupConfig(String groupName, Map<String, String> configuration)
       throws IOException {
+    if (RSGroupInfo.DEFAULT_GROUP.equals(groupName)) {
+      // We do not persist anything of default group, therefore, it is not supported to update
+      // default group's configuration which lost once master down.
+      throw new ConstraintException("configuration of " + RSGroupInfo.DEFAULT_GROUP
+          + " can't be stored persistently");
+    }
     RSGroupInfo rsGroupInfo = getRSGroupInfo(groupName);
     new HashSet<>(rsGroupInfo.getConfiguration().keySet())
         .forEach(rsGroupInfo::removeConfiguration);
diff --git a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupConfig.java b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupConfig.java
index 79d0a1e..e427d78 100644
--- a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupConfig.java
+++ b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupConfig.java
@@ -19,12 +19,14 @@ package org.apache.hadoop.hbase.rsgroup;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
 
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.constraint.ConstraintException;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -36,8 +38,6 @@ import org.junit.rules.TestName;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.hbase.thirdparty.com.google.common.collect.Maps;
-
 @Category(MediumTests.class)
 public class TestRSGroupConfig extends TestRSGroupsBase {
 
@@ -61,15 +61,15 @@ public class TestRSGroupConfig extends TestRSGroupsBase {
   }
 
   @Test
-  public void testSetDefaultGroupConfiguration() throws IOException {
-    testSetConfiguration(RSGroupInfo.DEFAULT_GROUP);
+  public void testSetDefaultGroupConfiguration() {
+    assertThrows(ConstraintException.class, () -> testSetConfiguration(RSGroupInfo.DEFAULT_GROUP));
   }
 
   @Test
   public void testSetNonDefaultGroupConfiguration() throws IOException {
     String group = getGroupName(name.getMethodName());
     rsGroupAdmin.addRSGroup(group);
-    testSetConfiguration(RSGroupInfo.DEFAULT_GROUP);
+    testSetConfiguration(group);
     rsGroupAdmin.removeRSGroup(group);
   }
 
@@ -79,14 +79,11 @@ public class TestRSGroupConfig extends TestRSGroupsBase {
     configuration.put("bbb", "222");
     rsGroupAdmin.updateRSGroupConfig(group, configuration);
     RSGroupInfo rsGroup = rsGroupAdmin.getRSGroupInfo(group);
-    Map<String, String> configFromGroup = Maps.newHashMap(rsGroup.getConfiguration());
-    assertNotNull(configFromGroup);
-    assertEquals(2, configFromGroup.size());
-    assertEquals("111", configFromGroup.get("aaa"));
+    assertEquals(configuration, rsGroup.getConfiguration());
     // unset configuration
     rsGroupAdmin.updateRSGroupConfig(group, null);
     rsGroup = rsGroupAdmin.getRSGroupInfo(group);
-    configFromGroup = rsGroup.getConfiguration();
+    Map<String, String> configFromGroup = rsGroup.getConfiguration();
     assertNotNull(configFromGroup);
     assertEquals(0, configFromGroup.size());
   }