HBASE-25365 The log in move_servers_rsgroup is incorrect (#2743)

Signed-off-by: stack <stack@apache.org>
This commit is contained in:
Baiqiang Zhao 2020-12-17 01:13:57 +08:00 committed by GitHub
parent 9b4be47c24
commit b6c03f2027
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 12 deletions

View File

@ -199,11 +199,13 @@ public class RSGroupAdminServer implements RSGroupAdmin {
* @param movedServers the servers that are moved to new group * @param movedServers the servers that are moved to new group
* @param movedTables the tables that are moved to new group * @param movedTables the tables that are moved to new group
* @param srcGrpServers all servers in the source group, excluding the movedServers * @param srcGrpServers all servers in the source group, excluding the movedServers
* @param targetGrp the target group * @param targetGroupName the target group
* @param sourceGroupName the source group
* @throws IOException if any error while moving regions * @throws IOException if any error while moving regions
*/ */
private void moveServerRegionsFromGroup(Set<Address> movedServers, Set<TableName> movedTables, private void moveServerRegionsFromGroup(Set<Address> movedServers, Set<TableName> movedTables,
Set<Address> srcGrpServers, RSGroupInfo targetGrp) throws IOException { Set<Address> srcGrpServers, String targetGroupName,
String sourceGroupName) throws IOException {
// Get server names corresponding to given Addresses // Get server names corresponding to given Addresses
List<ServerName> movedServerNames = new ArrayList<>(movedServers.size()); List<ServerName> movedServerNames = new ArrayList<>(movedServers.size());
List<ServerName> srcGrpServerNames = new ArrayList<>(srcGrpServers.size()); List<ServerName> srcGrpServerNames = new ArrayList<>(srcGrpServers.size());
@ -229,7 +231,7 @@ public class RSGroupAdminServer implements RSGroupAdmin {
if (!movedTables.contains(region.getTable()) && !srcGrpServers if (!movedTables.contains(region.getTable()) && !srcGrpServers
.contains(getRegionAddress(region))) { .contains(getRegionAddress(region))) {
LOG.info("Moving server region {}, which do not belong to RSGroup {}", LOG.info("Moving server region {}, which do not belong to RSGroup {}",
region.getShortNameToLog(), targetGrp.getName()); region.getShortNameToLog(), targetGroupName);
// Move region back to source RSGroup servers // Move region back to source RSGroup servers
ServerName dest = ServerName dest =
this.master.getLoadBalancer().randomAssignment(region, srcGrpServerNames); this.master.getLoadBalancer().randomAssignment(region, srcGrpServerNames);
@ -243,17 +245,16 @@ public class RSGroupAdminServer implements RSGroupAdmin {
assignmentFutures.add(Pair.newPair(region, future)); assignmentFutures.add(Pair.newPair(region, future));
} catch (Exception ioe) { } catch (Exception ioe) {
errorInRegionMove = true; errorInRegionMove = true;
LOG.error("Move region {} from group failed, will retry, current retry time is {}", LOG.error("Move region {} failed, will retry, current retry time is {}",
region.getShortNameToLog(), retry, ioe); region.getShortNameToLog(), retry, ioe);
} }
} }
} }
} }
boolean allRegionsMoved = boolean allRegionsMoved =
waitForRegionMovement(assignmentFutures, targetGrp.getName(), retry); waitForRegionMovement(assignmentFutures, sourceGroupName, retry);
if (allRegionsMoved && !errorInRegionMove) { if (allRegionsMoved && !errorInRegionMove) {
LOG.info("All regions from server(s) {} moved to target group {}.", movedServerNames, LOG.info("All regions from {} are moved back to {}", movedServerNames, sourceGroupName);
targetGrp.getName());
return; return;
} else { } else {
retry++; retry++;
@ -277,9 +278,9 @@ public class RSGroupAdminServer implements RSGroupAdmin {
* completion even if some region movement fails. * completion even if some region movement fails.
*/ */
private boolean waitForRegionMovement(List<Pair<RegionInfo, Future<byte[]>>> regionMoveFutures, private boolean waitForRegionMovement(List<Pair<RegionInfo, Future<byte[]>>> regionMoveFutures,
String tgtGrpName, int retryCount) { String groupName, int retryCount) {
LOG.info("Moving {} region(s) to group {}, current retry={}", regionMoveFutures.size(), LOG.info("Moving {} region(s) to group {}, current retry={}", regionMoveFutures.size(),
tgtGrpName, retryCount); groupName, retryCount);
boolean allRegionsMoved = true; boolean allRegionsMoved = true;
for (Pair<RegionInfo, Future<byte[]>> pair : regionMoveFutures) { for (Pair<RegionInfo, Future<byte[]>> pair : regionMoveFutures) {
try { try {
@ -295,7 +296,7 @@ public class RSGroupAdminServer implements RSGroupAdmin {
} catch (Exception e) { } catch (Exception e) {
allRegionsMoved = false; allRegionsMoved = false;
LOG.error("Move region {} to group {} failed, will retry on next attempt", LOG.error("Move region {} to group {} failed, will retry on next attempt",
pair.getFirst().getShortNameToLog(), tgtGrpName, e); pair.getFirst().getShortNameToLog(), groupName, e);
} }
} }
return allRegionsMoved; return allRegionsMoved;
@ -426,7 +427,7 @@ public class RSGroupAdminServer implements RSGroupAdmin {
targetGroupName); targetGroupName);
moveServerRegionsFromGroup(movedServers, Collections.emptySet(), moveServerRegionsFromGroup(movedServers, Collections.emptySet(),
rsGroupInfoManager.getRSGroup(srcGrp.getName()).getServers(), rsGroupInfoManager.getRSGroup(srcGrp.getName()).getServers(),
rsGroupInfoManager.getRSGroup(targetGroupName)); targetGroupName, srcGrp.getName());
LOG.info("Move servers done: {} => {}", srcGrp.getName(), targetGroupName); LOG.info("Move servers done: {} => {}", srcGrp.getName(), targetGroupName);
} }
} }
@ -579,7 +580,7 @@ public class RSGroupAdminServer implements RSGroupAdmin {
//move regions on these servers which do not belong to group tables //move regions on these servers which do not belong to group tables
moveServerRegionsFromGroup(servers, tables, moveServerRegionsFromGroup(servers, tables,
rsGroupInfoManager.getRSGroup(srcGroup).getServers(), rsGroupInfoManager.getRSGroup(srcGroup).getServers(),
rsGroupInfoManager.getRSGroup(targetGroup)); targetGroup, srcGroup);
//move regions of these tables which are not on group servers //move regions of these tables which are not on group servers
moveTableRegionsToGroup(tables, rsGroupInfoManager.getRSGroup(targetGroup)); moveTableRegionsToGroup(tables, rsGroupInfoManager.getRSGroup(targetGroup));
} }