[
https://issues.apache.org/jira/browse/HBASE-23078?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16940579#comment-16940579
]
Hudson commented on HBASE-23078:
--------------------------------
Results for branch branch-2.2
[build #645 on
builds.a.o|https://builds.apache.org/job/HBase%20Nightly/job/branch-2.2/645/]:
(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/branch-2.2/645//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/branch-2.2/645//JDK8_Nightly_Build_Report_(Hadoop2)/]
(/) {color:green}+1 jdk8 hadoop3 checks{color}
-- For more information [see jdk8 (hadoop3)
report|https://builds.apache.org/job/HBase%20Nightly/job/branch-2.2/645//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)