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)