Wang, Xinglong created HBASE-18602:
--------------------------------------

             Summary: rsgroup cleanup unassign code
                 Key: HBASE-18602
                 URL: https://issues.apache.org/jira/browse/HBASE-18602
             Project: HBase
          Issue Type: Improvement
          Components: rsgroup
    Affects Versions: 2.0.0-alpha-1
            Reporter: Wang, Xinglong
            Priority: Minor


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)

Reply via email to