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

Elliott Clark commented on HBASE-6760:
--------------------------------------

I would think that the cp should get called as long as the balancer ran,  even 
if there were no plans created or applied. 

Also the naming of blancerRan is pretty confusing.  appliedRegionPlans seems 
like a more accurate name.  Is that what we want or should it return true if 
the balancer was run at all?
                
> HMaster.balance() returns 'true' even if rebalancing plan is empty and the 
> balancer does not run
> ------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-6760
>                 URL: https://issues.apache.org/jira/browse/HBASE-6760
>             Project: HBase
>          Issue Type: Bug
>          Components: master
>            Reporter: Aditya Kishore
>            Assignee: Aditya Kishore
>            Priority: Minor
>
> The issue seems to exists due to oversight during the rewrite. In line 1289, 
> the variable 'plans' is created as a 'new ArrayList<RegionPlan>()' and then 
> in line 1298, balancerRan is calculated as (plans != null) which for obvious 
> reason, will always return true.
> {code:title=HMaster.java (trunk:1383496)}
> ....
> 1289        List<RegionPlan> plans = new ArrayList<RegionPlan>();
> 1290        //Give the balancer the current cluster state.
> 1291        this.balancer.setClusterStatus(getClusterStatus());
> 1292        for (Map<ServerName, List<HRegionInfo>> assignments : 
> assignmentsByTable.values()) {
> 1293          List<RegionPlan> partialPlans = 
> this.balancer.balanceCluster(assignments);
> 1294          if (partialPlans != null) plans.addAll(partialPlans);
> 1295        }
> 1296        int rpCount = 0;  // number of RegionPlans balanced so far
> 1297        long totalRegPlanExecTime = 0;
> 1298        balancerRan = plans != null;
> 1299        if (plans != null && !plans.isEmpty()) {
> ....
> {code}
> A simple fix is to initialize 'balancerRan' to 'false', remove "balancerRan = 
> plans != null" and add "balancerRan = true" after "if (plans != null && 
> !plans.isEmpty()) {".
> However, a question remains that should we call "this.cpHost.postBalance();" 
> if the balancer did not run at this point?
> I'll attach the patch shortly if I get a confirmation on this.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to