From 860b93dc69177428ed410abdbe5537f14cc00d9f Mon Sep 17 00:00:00 2001 From: stack Date: Wed, 29 Jan 2020 22:11:55 -0800 Subject: [PATCH] HBASE-23770 [Flakey Tests] TestRegionReplicasWithRestartScenarios#testWhenRestart --- ...estRegionReplicasWithRestartScenarios.java | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.java index dbe508bcbd..6211db680b 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.java @@ -17,10 +17,6 @@ */ package org.apache.hadoop.hbase.regionserver; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - import java.io.IOException; import java.util.ArrayList; import java.util.Collection; @@ -51,6 +47,8 @@ import org.junit.rules.TestName; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.junit.Assert.*; + @Category({RegionServerTests.class, MediumTests.class}) public class TestRegionReplicasWithRestartScenarios { @@ -127,16 +125,26 @@ public class TestRegionReplicasWithRestartScenarios { @Test public void testWhenRestart() throws Exception { - ServerName serverName = getRS().getServerName(); + // Start Region before stopping other so SCP has three servers to play with when it goes + // about assigning instead of two, depending on sequencing of SCP and RS stop/start. + // If two only, then it'll be forced to assign replicas alongside primaries. + HTU.getHBaseCluster().startRegionServerAndWait(60000).getRegionServer(); + HRegionServer stopRegionServer = getRS(); + ServerName serverName = stopRegionServer.getServerName(); + // Make a copy because this is actual instance from HRegionServer + Collection regionsOnStoppedServer = + new ArrayList(stopRegionServer.getOnlineRegionsLocalContext()); HTU.getHBaseCluster().stopRegionServer(serverName); HTU.getHBaseCluster().waitForRegionServerToStop(serverName, 60000); - HTU.getHBaseCluster().startRegionServerAndWait(60000); HTU.waitTableAvailable(this.tableName); - assertReplicaDistributed(); + assertReplicaDistributed(regionsOnStoppedServer); } private void assertReplicaDistributed() throws Exception { - Collection onlineRegions = getRS().getOnlineRegionsLocalContext(); + assertReplicaDistributed(getRS().getOnlineRegionsLocalContext()); + } + + private void assertReplicaDistributed(Collection onlineRegions) throws Exception { LOG.info("ASSERT DISTRIBUTED {}", onlineRegions); boolean res = checkDuplicates(onlineRegions); assertFalse(res); @@ -146,7 +154,8 @@ public class TestRegionReplicasWithRestartScenarios { Collection onlineRegions3 = getTertiaryRS().getOnlineRegionsLocalContext(); checkDuplicates(onlineRegions3); assertFalse(res); - int totalRegions = onlineRegions.size() + onlineRegions2.size() + onlineRegions3.size(); + int totalRegions = HTU.getMiniHBaseCluster().getLiveRegionServerThreads().stream(). + mapToInt(l -> l.getRegionServer().getOnlineRegions().size()).sum(); assertEquals(62, totalRegions); } -- 2.19.1