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);
}