[ 
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)

Reply via email to