hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chia-Ping Tsai (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-18602) rsgroup cleanup unassign code
Date Wed, 06 Sep 2017 17:53:00 GMT

    [ https://issues.apache.org/jira/browse/HBASE-18602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16155788#comment-16155788
] 

Chia-Ping Tsai commented on HBASE-18602:
----------------------------------------

{code}
    List<HRegionInfo> misplacedRegions = correctedState.get(LoadBalancer.BOGUS_SERVER_NAME);
    for (HRegionInfo regionInfo : misplacedRegions) {
      regionPlans.add(new RegionPlan(regionInfo, null, null));
    }
{code}
After the correctAssignments(), we will say the regions from BOGUS_SERVER_NAME are unassigned.
As i see it, the bug is we don't add something to misplacedRegions. BTW, the FavoredStochasticBalancer#balanceCluster
has similar logic to what you noticed.

> 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
>         Attachments: HBASE-18602-master-v1.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)

Mime
View raw message