cuijianwei created HBASE-12759:
----------------------------------
Summary: numMaxRegionsPerTable is not updated correctly in
BaseLoadBalancer.regionMoved
Key: HBASE-12759
URL: https://issues.apache.org/jira/browse/HBASE-12759
Project: HBase
Issue Type: Bug
Components: Balancer
Affects Versions: 1.0.0
Reporter: cuijianwei
Priority: Minor
numMaxRegionsPerTable will be updated in BaseLoadBalancer.regionMoved(...) as:
{code}
void regionMoved(int region, int oldServer, int newServer) {
....
int tableIndex = regionIndexToTableIndex[region];
if (oldServer >= 0) {
numRegionsPerServerPerTable[oldServer][tableIndex]--;
}
numRegionsPerServerPerTable[newServer][tableIndex]++;
//check whether this caused maxRegionsPerTable in the new Server to be
updated
if (numRegionsPerServerPerTable[newServer][tableIndex] >
numMaxRegionsPerTable[tableIndex]) {
numRegionsPerServerPerTable[newServer][tableIndex] =
numMaxRegionsPerTable[tableIndex]; // ==> should be:
numMaxRegionsPerTable[tableIndex] =
numRegionsPerServerPerTable[newServer][tableIndex];
} else if (oldServer >= 0 &&
(numRegionsPerServerPerTable[oldServer][tableIndex] + 1)
== numMaxRegionsPerTable[tableIndex]) {
//recompute maxRegionsPerTable since the previous value was coming from
the old server
// ===> should reset numMaxRegionsPerTable[tableIndex] by :
numMaxRegionsPerTable[tableIndex] = 0;
for (int serverIndex = 0 ; serverIndex <
numRegionsPerServerPerTable.length; serverIndex++) {
if (numRegionsPerServerPerTable[serverIndex][tableIndex] >
numMaxRegionsPerTable[tableIndex]) {
numMaxRegionsPerTable[tableIndex] =
numRegionsPerServerPerTable[serverIndex][tableIndex];
}
}
}
{code}
It seems that numMaxRegionsPerTable is not updated correctly as shown above.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)