You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by xu...@apache.org on 2019/03/01 06:18:31 UTC
[hbase] branch branch-1 updated: HBASE-21969 Improve the update of
destination rsgroup of RSGroupInfoManagerImpl#moveTables()
This is an automated email from the ASF dual-hosted git repository.
xucang 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 77a7e70 HBASE-21969 Improve the update of destination rsgroup of RSGroupInfoManagerImpl#moveTables()
77a7e70 is described below
commit 77a7e707caa5721906edfa6486e58d9561dfc705
Author: Xiang LI <li...@freewheel.tv>
AuthorDate: Thu Feb 28 18:13:26 2019 +0800
HBASE-21969 Improve the update of destination rsgroup of RSGroupInfoManagerImpl#moveTables()
---
.../hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java | 19 ++++++++++++++-----
1 file changed, 14 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 4c4e302..12c4faf 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
@@ -238,24 +238,33 @@ public class RSGroupInfoManagerImpl implements RSGroupInfoManager, ServerListene
@Override
public synchronized void moveTables(
Set<TableName> tableNames, String groupName) throws IOException {
+ // Check if rsGroup 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);
}