Ben Lau created HBASE-21439:
-------------------------------

             Summary: StochasticLoadBalancer RegionLoads aren’t being used in 
RegionLoad cost functions
                 Key: HBASE-21439
                 URL: https://issues.apache.org/jira/browse/HBASE-21439
             Project: HBase
          Issue Type: Bug
          Components: Balancer
    Affects Versions: 2.0.2, 1.3.2.1
            Reporter: Ben Lau
            Assignee: Ben Lau


In StochasticLoadBalancer.updateRegionLoad() the region loads are being put 
into the map with Bytes.toString(regionName).

First, this is a problem because Bytes.toString() assumes that the byte array 
is a UTF8 encoded String but there is no guarantee that regionName bytes are 
legal UTF8.

Secondly, in BaseLoadBalancer.registerRegion, we are reading the region loads 
out of the load map not using Bytes.toString() but using 
region.getRegionNameAsString() and region.getEncodedName().  So the load 
balancer will not see or use any of the cluster's RegionLoad history.

There are 2 primary ways to solve this issue, assuming we want to stay with 
String keys for the load map (seems reasonable to aid debugging).  We can 
either fix updateRegionLoad to store the regionName as a string properly or we 
can update both the reader & writer to use a new common valid String 
representation.

Will post a patch assuming we want to pursue the original intention, i.e. store 
regionNameAsAString for the loadmap key, but I'm open to fixing this a 
different way.




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to