You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by op...@apache.org on 2019/03/06 02:40:54 UTC

[hbase] 01/17: HBASE-21969 Improve the update of destination rsgroup of RSGroupInfoManagerImpl#moveTables()

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

openinx pushed a commit to branch HBASE-21879
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit 56aafb83f3dc6b989aee7c8bad53fdd7edb2496d
Author: Xiang Li <li...@freewheel.tv>
AuthorDate: Wed Feb 27 16:20:44 2019 +0000

    HBASE-21969 Improve the update of destination rsgroup of RSGroupInfoManagerImpl#moveTables()
---
 .../hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

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 956b448..c89bba8 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
@@ -255,23 +255,33 @@ final class RSGroupInfoManagerImpl implements RSGroupInfoManager {
   @Override
   public synchronized void moveTables(Set<TableName> tableNames, String groupName)
       throws IOException {
+    // Check if rsGroupMap contains the destination rsgroup
     if (groupName != null && !rsGroupMap.containsKey(groupName)) {
       throw new DoNotRetryIOException("Group " + groupName + " does not exist");
     }
 
+    // Make a copy of rsGroupMap to update
     Map<String, RSGroupInfo> newGroupMap = Maps.newHashMap(rsGroupMap);
+
+    // Remove tables from their original rsgroups
+    // and update the copy of rsGroupMap
     for (TableName tableName : tableNames) {
       if (tableMap.containsKey(tableName)) {
         RSGroupInfo src = new RSGroupInfo(newGroupMap.get(tableMap.get(tableName)));
         src.removeTable(tableName);
         newGroupMap.put(src.getName(), src);
       }
-      if (groupName != null) {
-        RSGroupInfo dst = new RSGroupInfo(newGroupMap.get(groupName));
-        dst.addTable(tableName);
-        newGroupMap.put(dst.getName(), dst);
-      }
     }
+
+    // Add tables to the destination rsgroup
+    // and update the copy of rsGroupMap
+    if (groupName != null) {
+      RSGroupInfo dstGroup = new RSGroupInfo(newGroupMap.get(groupName));
+      dstGroup.addAllTables(tableNames);
+      newGroupMap.put(dstGroup.getName(), dstGroup);
+    }
+
+    // Flush according to the updated copy of rsGroupMap
     flushConfig(newGroupMap);
   }