Details
Description
While walking through rsgroup code, I found that variable misplacedRegions has never been added any element into. This makes the unassign region code is not functional. And according to my test, it is actually unnecessary to do that.
RSGroupBasedLoadBalancer.java
private Map<ServerName, List<HRegionInfo>> correctAssignments( Map<ServerName, List<HRegionInfo>> existingAssignments) throws HBaseIOException{ Map<ServerName, List<HRegionInfo>> correctAssignments = new TreeMap<>(); List<HRegionInfo> misplacedRegions = new LinkedList<>(); correctAssignments.put(LoadBalancer.BOGUS_SERVER_NAME, new LinkedList<>()); for (Map.Entry<ServerName, List<HRegionInfo>> assignments : existingAssignments.entrySet()){ ServerName sName = assignments.getKey(); correctAssignments.put(sName, new LinkedList<>()); List<HRegionInfo> regions = assignments.getValue(); for (HRegionInfo region : regions) { RSGroupInfo info = null; try { info = rsGroupInfoManager.getRSGroup( rsGroupInfoManager.getRSGroupOfTable(region.getTable())); } catch (IOException exp) { LOG.debug("RSGroup information null for region of table " + region.getTable(), exp); } if ((info == null) || (!info.containsServer(sName.getAddress()))) { correctAssignments.get(LoadBalancer.BOGUS_SERVER_NAME).add(region); } else { correctAssignments.get(sName).add(region); } } } //TODO bulk unassign? //unassign misplaced regions, so that they are assigned to correct groups. for(HRegionInfo info: misplacedRegions) { try { this.masterServices.getAssignmentManager().unassign(info); } catch (IOException e) { throw new HBaseIOException(e); } } return correctAssignments; }
Attachments
Attachments
Issue Links
- is blocked by
-
HBASE-18350 RSGroups are broken under AMv2
- Resolved