[ https://issues.apache.org/jira/browse/HBASE-18602?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chia-Ping Tsai updated HBASE-18602: ----------------------------------- Attachment: HBASE-18602-master-v3.patch > rsgroup cleanup unassign code > ----------------------------- > > Key: HBASE-18602 > URL: https://issues.apache.org/jira/browse/HBASE-18602 > Project: HBase > Issue Type: Improvement > Components: rsgroup > Reporter: Wang, Xinglong > Assignee: Wang, Xinglong > Priority: Minor > Fix For: 2.0.0 > > Attachments: HBASE-18602-master-v1.patch, > HBASE-18602-master-v2.patch, HBASE-18602-master-v3.patch, > HBASE-18602-master-v3.patch > > > 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 > {code: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; > } > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)