HBASE-22180 Make TestBlockEvictionFromClient.testBlockRefCountAfterSplits more stable

This commit is contained in:
zhangduo 2019-04-06 22:23:41 +08:00
parent 08060b32b1
commit 11e84f9c68
1 changed files with 6 additions and 12 deletions

View File

@ -23,7 +23,6 @@ import static org.junit.Assert.assertTrue;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -72,6 +71,8 @@ import org.junit.rules.TestName;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.apache.hbase.thirdparty.com.google.common.collect.Iterables;
@Category({ LargeTests.class, ClientTests.class }) @Category({ LargeTests.class, ClientTests.class })
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public class TestBlockEvictionFromClient { public class TestBlockEvictionFromClient {
@ -577,7 +578,7 @@ public class TestBlockEvictionFromClient {
table = TEST_UTIL.createTable(tableName, FAMILIES_1, 1, 1024); table = TEST_UTIL.createTable(tableName, FAMILIES_1, 1, 1024);
// get the block cache and region // get the block cache and region
RegionLocator locator = TEST_UTIL.getConnection().getRegionLocator(tableName); RegionLocator locator = TEST_UTIL.getConnection().getRegionLocator(tableName);
String regionName = locator.getAllRegionLocations().get(0).getRegionInfo().getEncodedName(); String regionName = locator.getAllRegionLocations().get(0).getRegion().getEncodedName();
HRegion region = HRegion region =
TEST_UTIL.getRSForFirstRegionInTable(tableName).getRegion(regionName); TEST_UTIL.getRSForFirstRegionInTable(tableName).getRegion(regionName);
HStore store = region.getStores().iterator().next(); HStore store = region.getStores().iterator().next();
@ -601,19 +602,12 @@ public class TestBlockEvictionFromClient {
put.addColumn(FAMILY, QUALIFIER2, data2); put.addColumn(FAMILY, QUALIFIER2, data2);
table.put(put); table.put(put);
region.flush(true); region.flush(true);
ServerName rs = Iterables.getOnlyElement(TEST_UTIL.getAdmin().getRegionServers());
int regionCount = TEST_UTIL.getAdmin().getRegions(rs).size();
LOG.info("About to SPLIT on " + Bytes.toString(ROW1)); LOG.info("About to SPLIT on " + Bytes.toString(ROW1));
TEST_UTIL.getAdmin().split(tableName, ROW1); TEST_UTIL.getAdmin().split(tableName, ROW1);
// Wait for splits // Wait for splits
Collection<ServerName> regionServers = TEST_UTIL.getAdmin().getRegionServers(); TEST_UTIL.waitFor(60000, () -> TEST_UTIL.getAdmin().getRegions(rs).size() > regionCount);
Iterator<ServerName> serverItr = regionServers.iterator();
serverItr.hasNext();
ServerName rs = serverItr.next();
List<RegionInfo> onlineRegions = TEST_UTIL.getAdmin().getRegions(rs);
while (onlineRegions.size() != 2) {
onlineRegions = TEST_UTIL.getAdmin().getRegions(rs);
Thread.sleep(100);
LOG.info("Waiting on SPLIT to complete...");
}
region.compact(true); region.compact(true);
Iterator<CachedBlock> iterator = cache.iterator(); Iterator<CachedBlock> iterator = cache.iterator();
// Though the split had created the HalfStorefileReader - the firstkey and lastkey scanners // Though the split had created the HalfStorefileReader - the firstkey and lastkey scanners