Revert "HBASE-26872 Load rate calculator for cost functions should be more precise (#4253)"

This reverts commit 7ae6be7c25.
This commit is contained in:
haxiaolin 2022-03-28 18:16:38 +08:00
parent fd621a7c1b
commit 762390045b
2 changed files with 4 additions and 28 deletions

View File

@ -42,7 +42,7 @@ abstract class CostFromRegionLoadAsRateFunction extends CostFromRegionLoadFuncti
double cost = 0; double cost = 0;
do { do {
double current = getCostFromRl(iter.next()); double current = getCostFromRl(iter.next());
cost += current >= previous ? current - previous : current; cost += current - previous;
previous = current; previous = current;
} while (iter.hasNext()); } while (iter.hasNext());
return Math.max(0, cost / (regionLoadList.size() - 1)); return Math.max(0, cost / (regionLoadList.size() - 1));

View File

@ -23,6 +23,7 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -49,6 +50,7 @@ import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
import org.junit.ClassRule; import org.junit.ClassRule;
import org.junit.Test; import org.junit.Test;
import org.junit.experimental.categories.Category; import org.junit.experimental.categories.Category;
import org.apache.hbase.thirdparty.org.apache.commons.collections4.CollectionUtils; import org.apache.hbase.thirdparty.org.apache.commons.collections4.CollectionUtils;
@Category({ MasterTests.class, MediumTests.class }) @Category({ MasterTests.class, MediumTests.class })
@ -447,32 +449,6 @@ public class TestStochasticLoadBalancer extends BalancerTestBase {
assertEquals(2.5, result, 0.01); assertEquals(2.5, result, 0.01);
} }
@Test
public void testRegionLoadCostWhenDecrease() {
List<BalancerRegionLoad> regionLoads = new ArrayList<>();
// test region loads of [1,2,1,4]
for (int i = 1; i < 5; i++) {
int load = i == 3 ? 1 : i;
BalancerRegionLoad regionLoad = mock(BalancerRegionLoad.class);
when(regionLoad.getReadRequestsCount()).thenReturn((long)load);
when(regionLoad.getCpRequestsCount()).thenReturn((long)load);
regionLoads.add(regionLoad);
}
Configuration conf = HBaseConfiguration.create();
ReadRequestCostFunction readCostFunction =
new ReadRequestCostFunction(conf);
double rateResult = readCostFunction.getRegionLoadCost(regionLoads);
// read requests are treated as a rate so the average rate here is simply 1
assertEquals(1.67, rateResult, 0.01);
CPRequestCostFunction cpCostFunction =
new CPRequestCostFunction(conf);
rateResult = cpCostFunction.getRegionLoadCost(regionLoads);
// coprocessor requests are treated as a rate so the average rate here is simply 1
assertEquals(1.67, rateResult, 0.01);
}
@Test @Test
public void testLosingRs() throws Exception { public void testLosingRs() throws Exception {
int numNodes = 3; int numNodes = 3;