This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/master by this push:
     new 31fc97edeed HBASE-27075 
TestUpdateRSGroupConfiguration.testCustomOnlineConfigChangeInRSGroup is flaky 
(#4636)
31fc97edeed is described below

commit 31fc97edeede08cfc9c8dd9fe22c3775ede2eebb
Author: Duo Zhang <[email protected]>
AuthorDate: Thu Jul 21 14:26:52 2022 +0800

    HBASE-27075 
TestUpdateRSGroupConfiguration.testCustomOnlineConfigChangeInRSGroup is flaky 
(#4636)
    
    Signed-off-by: Xin Sun <[email protected]>
---
 .../client/AbstractTestUpdateConfiguration.java    | 12 ++++-
 .../hadoop/hbase/rsgroup/TestRSGroupsBase.java     |  8 +--
 .../rsgroup/TestUpdateRSGroupConfiguration.java    | 62 ++++++++++------------
 3 files changed, 41 insertions(+), 41 deletions(-)

diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/AbstractTestUpdateConfiguration.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/AbstractTestUpdateConfiguration.java
index 0db2f651eb0..7da46873c1d 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/AbstractTestUpdateConfiguration.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/AbstractTestUpdateConfiguration.java
@@ -24,6 +24,8 @@ import java.nio.file.Paths;
 import java.nio.file.StandardCopyOption;
 import org.apache.hadoop.hbase.HBaseTestingUtil;
 import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Base class to test Configuration Update logic. It wraps up things needed to 
test configuration
@@ -31,6 +33,8 @@ import 
org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread;
  * file.
  */
 public abstract class AbstractTestUpdateConfiguration {
+  private static final Logger LOG = 
LoggerFactory.getLogger(AbstractTestUpdateConfiguration.class);
+
   private static final String SERVER_CONFIG = "hbase-site.xml";
   private static final String OVERRIDE_SERVER_CONFIG = 
"override-hbase-site.xml";
   private static final String BACKUP_SERVER_CONFIG = "backup-hbase-site.xml";
@@ -90,7 +94,9 @@ public abstract class AbstractTestUpdateConfiguration {
    * using {@link #restoreHBaseSiteXML()}.
    * @throws IOException if an I/O error occurs
    */
-  protected void replaceHBaseSiteXML() throws IOException {
+  protected final void replaceHBaseSiteXML() throws IOException {
+    LOG.info("Replace hbase config {} with {}", configFileUnderTestDataDir,
+      overrideConfigFileUnderTestDataDir);
     // make a backup of hbase-site.xml
     Files.copy(configFileUnderTestDataDir, backupConfigFileUnderTestDataDir,
       StandardCopyOption.REPLACE_EXISTING);
@@ -104,7 +110,9 @@ public abstract class AbstractTestUpdateConfiguration {
    * {@link #replaceHBaseSiteXML()}.
    * @throws IOException if an I/O error occurs
    */
-  protected void restoreHBaseSiteXML() throws IOException {
+  protected final void restoreHBaseSiteXML() throws IOException {
+    LOG.info("Restore hbase config {} with {}", configFileUnderTestDataDir,
+      backupConfigFileUnderTestDataDir);
     // restore hbase-site.xml
     Files.copy(backupConfigFileUnderTestDataDir, configFileUnderTestDataDir,
       StandardCopyOption.REPLACE_EXISTING);
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsBase.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsBase.java
index 243a63067f5..86d73b03f50 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsBase.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsBase.java
@@ -108,11 +108,11 @@ public abstract class TestRSGroupsBase extends 
AbstractTestUpdateConfiguration {
       conf.set(CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY, 
CPMasterObserver.class.getName());
     }
 
-    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, 
NUM_SLAVES_BASE - 1);
+    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, 
NUM_SLAVES_BASE);
     conf.setBoolean(SnapshotManager.HBASE_SNAPSHOT_ENABLED, true);
     conf.setInt("hbase.rpc.timeout", 100000);
 
-    TEST_UTIL.startMiniCluster(NUM_SLAVES_BASE - 1);
+    TEST_UTIL.startMiniCluster(NUM_SLAVES_BASE);
     initialize();
   }
 
@@ -303,9 +303,9 @@ public abstract class TestRSGroupsBase extends 
AbstractTestUpdateConfiguration {
   protected final void toggleQuotaCheckAndRestartMiniCluster(boolean enable) 
throws Exception {
     TEST_UTIL.shutdownMiniCluster();
     TEST_UTIL.getConfiguration().setBoolean(QuotaUtil.QUOTA_CONF_KEY, enable);
-    TEST_UTIL.startMiniCluster(NUM_SLAVES_BASE - 1);
+    TEST_UTIL.startMiniCluster(NUM_SLAVES_BASE);
     
TEST_UTIL.getConfiguration().setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART,
-      NUM_SLAVES_BASE - 1);
+      NUM_SLAVES_BASE);
     
TEST_UTIL.getConfiguration().setBoolean(SnapshotManager.HBASE_SNAPSHOT_ENABLED, 
true);
     initialize();
   }
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/rsgroup/TestUpdateRSGroupConfiguration.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/rsgroup/TestUpdateRSGroupConfiguration.java
index 86bb50e5592..b530e876811 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/rsgroup/TestUpdateRSGroupConfiguration.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/rsgroup/TestUpdateRSGroupConfiguration.java
@@ -18,11 +18,11 @@
 package org.apache.hadoop.hbase.rsgroup;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.assertThrows;
 
-import java.util.stream.Collectors;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.net.Address;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.util.JVMClusterUtil;
 import org.junit.After;
@@ -35,6 +35,8 @@ import org.junit.experimental.categories.Category;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.apache.hbase.thirdparty.com.google.common.collect.Iterables;
+
 @Category({ MediumTests.class })
 public class TestUpdateRSGroupConfiguration extends TestRSGroupsBase {
   protected static final Logger LOG = 
LoggerFactory.getLogger(TestUpdateRSGroupConfiguration.class);
@@ -67,24 +69,15 @@ public class TestUpdateRSGroupConfiguration extends 
TestRSGroupsBase {
     tearDownAfterMethod();
   }
 
-  @Test
-  public void testOnlineConfigChangeInRSGroup() throws Exception {
-    addGroup(TEST_GROUP, 1);
-    ADMIN.updateConfiguration(TEST_GROUP);
-  }
-
   @Test
   public void testNonexistentRSGroup() throws Exception {
-    try {
-      ADMIN.updateConfiguration(TEST2_GROUP);
-      fail("Group does not exist: test2");
-    } catch (IllegalArgumentException iae) {
-      // expected
-    }
+    assertThrows(IllegalArgumentException.class, () -> 
ADMIN.updateConfiguration(TEST2_GROUP));
   }
 
   @Test
   public void testCustomOnlineConfigChangeInRSGroup() throws Exception {
+    RSGroupInfo testRSGroup = addGroup(TEST_GROUP, 1);
+    RSGroupInfo test2RSGroup = addGroup(TEST2_GROUP, 1);
     // Check the default configuration of the RegionServers
     TEST_UTIL.getMiniHBaseCluster().getRegionServerThreads().forEach(thread -> 
{
       Configuration conf = thread.getRegionServer().getConfiguration();
@@ -92,28 +85,27 @@ public class TestUpdateRSGroupConfiguration extends 
TestRSGroupsBase {
     });
 
     replaceHBaseSiteXML();
-    RSGroupInfo testRSGroup = addGroup(TEST_GROUP, 1);
-    RSGroupInfo test2RSGroup = addGroup(TEST2_GROUP, 1);
-    ADMIN.updateConfiguration(TEST_GROUP);
-
-    // Check the configuration of the RegionServer in test rsgroup, should be 
update
-    Configuration regionServerConfiguration = TEST_UTIL.getMiniHBaseCluster()
-      
.getLiveRegionServerThreads().stream().map(JVMClusterUtil.RegionServerThread::getRegionServer)
-      .filter(regionServer -> (regionServer.getServerName().getAddress()
-        .equals(testRSGroup.getServers().iterator().next())))
-      .collect(Collectors.toList()).get(0).getConfiguration();
-    int custom = regionServerConfiguration.getInt("hbase.custom.config", 0);
-    assertEquals(1000, custom);
+    try {
+      ADMIN.updateConfiguration(TEST_GROUP);
 
-    // Check the configuration of the RegionServer in test2 rsgroup, should 
not be update
-    regionServerConfiguration = 
TEST_UTIL.getMiniHBaseCluster().getLiveRegionServerThreads()
-      .stream().map(JVMClusterUtil.RegionServerThread::getRegionServer)
-      .filter(regionServer -> (regionServer.getServerName().getAddress()
-        .equals(test2RSGroup.getServers().iterator().next())))
-      .collect(Collectors.toList()).get(0).getConfiguration();
-    custom = regionServerConfiguration.getInt("hbase.custom.config", 0);
-    assertEquals(0, custom);
+      Address testServerAddr = 
Iterables.getOnlyElement(testRSGroup.getServers());
+      LOG.info("Check hbase.custom.config for " + testServerAddr);
+      Configuration testRsConf = 
TEST_UTIL.getMiniHBaseCluster().getLiveRegionServerThreads()
+        .stream().map(JVMClusterUtil.RegionServerThread::getRegionServer)
+        .filter(rs -> 
rs.getServerName().getAddress().equals(testServerAddr)).findFirst().get()
+        .getConfiguration();
+      assertEquals(1000, testRsConf.getInt("hbase.custom.config", 0));
 
-    restoreHBaseSiteXML();
+      Address test2ServerAddr = 
Iterables.getOnlyElement(test2RSGroup.getServers());
+      LOG.info("Check hbase.custom.config for " + test2ServerAddr);
+      // Check the configuration of the RegionServer in test2 rsgroup, should 
not be update
+      Configuration test2RsConf = 
TEST_UTIL.getMiniHBaseCluster().getLiveRegionServerThreads()
+        .stream().map(JVMClusterUtil.RegionServerThread::getRegionServer)
+        .filter(rs -> 
rs.getServerName().getAddress().equals(test2ServerAddr)).findFirst().get()
+        .getConfiguration();
+      assertEquals(0, test2RsConf.getInt("hbase.custom.config", 0));
+    } finally {
+      restoreHBaseSiteXML();
+    }
   }
 }

Reply via email to