cuijianwei created HBASE-12760:
----------------------------------

             Summary: Return NullAction when region is located in highest 
locality server
                 Key: HBASE-12760
                 URL: https://issues.apache.org/jira/browse/HBASE-12760
             Project: HBase
          Issue Type: Improvement
          Components: Balancer
    Affects Versions: 0.99.2
            Reporter: cuijianwei
            Priority: Minor


StochasticLoadBalancer#LocalityBasedCandidateGenerator will try to move a 
region to the server with the highest locality. The target server is selected 
by LocalityBasedCandidateGenerator.pickHighestLocalityServer, as:
{code}
    private int pickHighestLocalityServer(Cluster cluster, int thisServer, int 
thisRegion) {
      ...
      for (int loc : regionLocations) {
        if (loc >= 0 && loc != thisServer) { // find the first suitable server
          return loc;
        }
      }
      ...
    }
{code}
If the region is just located in the best server, the current logic will choose 
the server having the second highest locality, generating an action to try to 
move region to server with lower locality. Is it better to return a NullAction 
in this situation (as below)? so that there won't be further computing caused 
by the generated action.
{code}
    private int pickHighestLocalityServer(Cluster cluster, int thisServer, int 
thisRegion) {
      ...
      for (int loc : regionLocations) {
        if (loc == thisServer) {
          return -1; // return NullAction when the region is just located in 
the best server
        }
        if (loc >= 0) { // find the first suitable server
          return loc;
        }
      }
      ...
    }
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to