[
https://issues.apache.org/jira/browse/HBASE-5482?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ramkrishna.s.vasudevan resolved HBASE-5482.
-------------------------------------------
Resolution: Fixed
Hadoop Flags: Reviewed
> In 0.90, balancer algo leading to same region balanced twice and picking same
> region with Src and Destination as same RS.
> -------------------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-5482
> URL: https://issues.apache.org/jira/browse/HBASE-5482
> Project: HBase
> Issue Type: Bug
> Components: master
> Affects Versions: 0.90.5
> Reporter: ramkrishna.s.vasudevan
> Assignee: ramkrishna.s.vasudevan
> Fix For: 0.90.7
>
> Attachments: 5482-v2.txt, HBASE-5482_1.patch, HBASE-5482_2.patch
>
>
> There are possibility of 2 problems
> -> When we populate regionsToMove while iterating the serverinfo in
> descending manner there is a chance that the same region can be added twice.
> Because in the first loop we do a randomization of the regions.
> Where as when we get we have neededRegions!= 0 we just get the region in the
> index and add it again . This may lead to have same region in the
> regionsToMove list.
> -> Another problem is
> when the problem in the first point happens then there is a chance that
> the regionToMove can have the same src and destination and the same region
> can be picked every 5 mins.
> {code}
> for(Map.Entry<HServerInfo, List<HRegionInfo>> server :
> serversByLoad.descendingMap().entrySet()) {
> BalanceInfo balanceInfo = serverBalanceInfo.get(server.getKey());
> int idx =
> balanceInfo == null ? 0 : balanceInfo.getNextRegionForUnload();
> if (idx >= server.getValue().size()) break;
> HRegionInfo region = server.getValue().get(idx);
> if (region.isMetaRegion()) continue; // Don't move meta regions.
> regionsToMove.add(new RegionPlan(region, server.getKey(), null));
> if(--neededRegions == 0) {
> // No more regions needed, done shedding
> break;
> }
> }
> {code}
> If i have meta and root in the top two loaded region server(totally 3 RS), we
> just skip the regions in those region server and populate the region from the
> least loaded RS.
> Then in the next loop we iterate from the least loaded server and populate
> the destination as also the same server.
> This is leading to a condition where every 5 min balancing happens and also
> the server is same for src and dest.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira