You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Bo Cui (Jira)" <ji...@apache.org> on 2020/09/24 01:19:00 UTC

[jira] [Updated] (HBASE-25092) RSGroupBalancer#assignments lost some regionPlans

     [ https://issues.apache.org/jira/browse/HBASE-25092?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bo Cui updated HBASE-25092:
---------------------------
    Description: 
https://github.com/apache/hbase/blob/b2f2c79d8fa18fb691e669419004cc5168b0838d/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java#L216

when fallback is enabled, servers does not contain the current group's rs, and contains the rs of other group, region will be assigend to other group, but assignments already contains targetRS, and then assignments.putAll overwrites old entry

{code:java}
this.internalBalancer.retainAssignment(currentAssignmentMap, candidateList)
              .forEach((serverName, regionInfos) -> {
                assignments.computeIfAbsent(serverName, s -> new ArrayList<>())
                    .addAll(regionInfos);
});
{code}

the issue exists only in the branch-2.

  was:
https://github.com/apache/hbase/blob/b2f2c79d8fa18fb691e669419004cc5168b0838d/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java#L216

when fallbak is enabled, servers does not contain the current group's rs, and contains the rs of other group, region will be assigend to other group, but assignments already contains targetRS, and then assignments.putAll overwrites old entry

{code:java}
this.internalBalancer.retainAssignment(currentAssignmentMap, candidateList)
              .forEach((serverName, regionInfos) -> {
                assignments.computeIfAbsent(serverName, s -> new ArrayList<>())
                    .addAll(regionInfos);
});
{code}

the issue exists only in the branch-2.


> RSGroupBalancer#assignments lost some regionPlans
> -------------------------------------------------
>
>                 Key: HBASE-25092
>                 URL: https://issues.apache.org/jira/browse/HBASE-25092
>             Project: HBase
>          Issue Type: Bug
>          Components: rsgroup
>    Affects Versions: 2.3.1, 2.2.3
>            Reporter: Bo Cui
>            Priority: Major
>
> https://github.com/apache/hbase/blob/b2f2c79d8fa18fb691e669419004cc5168b0838d/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java#L216
> when fallback is enabled, servers does not contain the current group's rs, and contains the rs of other group, region will be assigend to other group, but assignments already contains targetRS, and then assignments.putAll overwrites old entry
> {code:java}
> this.internalBalancer.retainAssignment(currentAssignmentMap, candidateList)
>               .forEach((serverName, regionInfos) -> {
>                 assignments.computeIfAbsent(serverName, s -> new ArrayList<>())
>                     .addAll(regionInfos);
> });
> {code}
> the issue exists only in the branch-2.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)