[ https://issues.apache.org/jira/browse/HBASE-23078?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16940576#comment-16940576 ]
Hudson commented on HBASE-23078: -------------------------------- Results for branch master [build #1487 on builds.a.o|https://builds.apache.org/job/HBase%20Nightly/job/master/1487/]: (x) *{color:red}-1 overall{color}* ---- details (if available): (/) {color:green}+1 general checks{color} -- For more information [see general report|https://builds.apache.org/job/HBase%20Nightly/job/master/1487//General_Nightly_Build_Report/] (x) {color:red}-1 jdk8 hadoop2 checks{color} -- For more information [see jdk8 (hadoop2) report|https://builds.apache.org/job/HBase%20Nightly/job/master/1487//JDK8_Nightly_Build_Report_(Hadoop2)/] (x) {color:red}-1 jdk8 hadoop3 checks{color} -- For more information [see jdk8 (hadoop3) report|https://builds.apache.org/job/HBase%20Nightly/job/master/1487//JDK8_Nightly_Build_Report_(Hadoop3)/] (/) {color:green}+1 source release artifact{color} -- See build output for details. (/) {color:green}+1 client integration test{color} > BaseLoadBalancer should consider region replicas when randomAssignment and > roundRobinAssignment > ----------------------------------------------------------------------------------------------- > > Key: HBASE-23078 > URL: https://issues.apache.org/jira/browse/HBASE-23078 > Project: HBase > Issue Type: Bug > Reporter: Guanghao Zhang > Assignee: Guanghao Zhang > Priority: Major > > Copied the comment in HBASE-23035. > > There are two problems about the LoadBalancer. > > 1. The cluster means the cluster state of the whole cluster. But > hasRegionReplica is false, so it only create clusterstate by the regions > which need to assign, not the whole cluster... > {code:java} > Cluster cluster = createCluster(servers, regions, false); > List<RegionInfo> unassignedRegions = new ArrayList<>(); > roundRobinAssignment(cluster, regions, unassignedRegions, > servers, assignments); > protected Cluster createCluster(List<ServerName> servers, > Collection<RegionInfo> regions, > boolean hasRegionReplica) { > // Get the snapshot of the current assignments for the regions in > question, and then create > // a cluster out of it. Note that we might have replicas already assigned > to some servers > // earlier. So we want to get the snapshot to see those assignments, but > this will only contain > // replicas of the regions that are passed (for performance). > Map<ServerName, List<RegionInfo>> clusterState = null; > if (!hasRegionReplica) { > clusterState = getRegionAssignmentsByServer(regions); > } else { > // for the case where we have region replica it is better we get the > entire cluster's snapshot > clusterState = getRegionAssignmentsByServer(null); > } for (ServerName server : servers) { > if (!clusterState.containsKey(server)) { > clusterState.put(server, EMPTY_REGION_LIST); > } > } > return new Cluster(regions, clusterState, null, this.regionFinder, > rackManager); > } > {code} > 2. wouldLowerAvailability method only consider the primary regions. The > replica region can't assign to same server with primary region. But can be > assigned to same server with other replica regions. -- This message was sent by Atlassian Jira (v8.3.4#803005)