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

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


The following commit(s) were added to refs/heads/master by this push:
     new b0953f8918 HDDS-8676. Speed up TestContainerBalancer (#4776)
b0953f8918 is described below

commit b0953f8918c99b9b2dc8478b0786d8a2de2e5fa2
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Fri May 26 13:55:49 2023 +0200

    HDDS-8676. Speed up TestContainerBalancer (#4776)
---
 .../hdds/scm/container/balancer/ContainerBalancer.java    | 15 ++++++++++-----
 .../scm/container/balancer/ContainerBalancerTask.java     |  2 +-
 .../scm/container/balancer/TestContainerBalancer.java     | 14 ++++++++++----
 3 files changed, 21 insertions(+), 10 deletions(-)

diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/balancer/ContainerBalancer.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/balancer/ContainerBalancer.java
index 7c48af1118..54109153b7 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/balancer/ContainerBalancer.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/balancer/ContainerBalancer.java
@@ -32,6 +32,7 @@ import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 import java.util.concurrent.TimeoutException;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.locks.ReentrantLock;
 
 /**
@@ -40,6 +41,8 @@ import java.util.concurrent.locks.ReentrantLock;
  */
 public class ContainerBalancer extends StatefulService {
 
+  private static final AtomicInteger ID = new AtomicInteger();
+
   public static final Logger LOG =
       LoggerFactory.getLogger(ContainerBalancer.class);
 
@@ -272,11 +275,12 @@ public class ContainerBalancer extends StatefulService {
       boolean delayStart) {
     task = new ContainerBalancerTask(scm, nextIterationIndex, this, metrics,
         config, delayStart);
-    currentBalancingThread = new Thread(task);
-    currentBalancingThread.setName("ContainerBalancerTask");
-    currentBalancingThread.setDaemon(true);
-    currentBalancingThread.start();
-    LOG.info("Starting Container Balancer... {}", this);
+    Thread thread = new Thread(task);
+    thread.setName("ContainerBalancerTask-" + ID.incrementAndGet());
+    thread.setDaemon(true);
+    thread.start();
+    currentBalancingThread = thread;
+    LOG.info("Starting Container Balancer {}... {}", thread, this);
   }
 
   /**
@@ -340,6 +344,7 @@ public class ContainerBalancer extends StatefulService {
     // to avoid locking others waiting
     // wait for balancingThread to die with interrupt
     balancingThread.interrupt();
+    LOG.info("Container Balancer waiting for {} to stop", balancingThread);
     try {
       balancingThread.join();
     } catch (InterruptedException exception) {
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/balancer/ContainerBalancerTask.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/balancer/ContainerBalancerTask.java
index e915f54ef0..af65c14575 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/balancer/ContainerBalancerTask.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/balancer/ContainerBalancerTask.java
@@ -228,7 +228,7 @@ public class ContainerBalancerTask implements Runnable {
           long sleepTime = 3 * nodeReportInterval;
           LOG.info("ContainerBalancer will sleep for {} ms while waiting " +
               "for updated usage information from Datanodes.", sleepTime);
-          Thread.sleep(nodeReportInterval);
+          Thread.sleep(sleepTime);
         } catch (InterruptedException e) {
           LOG.info("Container Balancer was interrupted while waiting for" +
               "datanodes refreshing volume usage info");
diff --git 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/balancer/TestContainerBalancer.java
 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/balancer/TestContainerBalancer.java
index 7b199d4310..f67ac49bdb 100644
--- 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/balancer/TestContainerBalancer.java
+++ 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/balancer/TestContainerBalancer.java
@@ -37,17 +37,21 @@ import org.apache.ozone.test.GenericTestUtils;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 import org.mockito.Mockito;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.event.Level;
 
+import static org.apache.hadoop.hdds.HddsConfigKeys.HDDS_NODE_REPORT_INTERVAL;
+import static 
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_SCM_WAIT_TIME_AFTER_SAFE_MODE_EXIT;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 /**
  * Tests for {@link ContainerBalancer}.
  */
+@Timeout(60)
 public class TestContainerBalancer {
   private static final Logger LOG =
       LoggerFactory.getLogger(TestContainerBalancer.class);
@@ -66,6 +70,9 @@ public class TestContainerBalancer {
   public void setup() throws IOException, NodeNotFoundException,
       TimeoutException {
     conf = new OzoneConfiguration();
+    conf.setTimeDuration(HDDS_SCM_WAIT_TIME_AFTER_SAFE_MODE_EXIT,
+        5, TimeUnit.SECONDS);
+    conf.setTimeDuration(HDDS_NODE_REPORT_INTERVAL, 2, TimeUnit.SECONDS);
     scm = Mockito.mock(StorageContainerManager.class);
     serviceStateManager = Mockito.mock(StatefulServiceStateManagerImpl.class);
     balancerConfiguration =
@@ -73,7 +80,7 @@ public class TestContainerBalancer {
     balancerConfiguration.setThreshold(10);
     balancerConfiguration.setIterations(10);
     // Note: this will make container balancer task to wait for running
-    // for 60 sec as default and ensure below test case have sufficient
+    // for 6 sec as default and ensure below test case have sufficient
     // time to verify, and interrupt when stop.
     balancerConfiguration.setTriggerDuEnable(true);
     conf.setFromObject(balancerConfiguration);
@@ -230,9 +237,8 @@ public class TestContainerBalancer {
       throws IllegalContainerBalancerStateException, IOException,
       InvalidContainerBalancerConfigurationException, TimeoutException,
       InterruptedException {
-    long delayDuration = 10;
-    conf.setTimeDuration("hdds.scm.wait.time.after.safemode.exit",
-        delayDuration, TimeUnit.SECONDS);
+    long delayDuration = conf.getTimeDuration(
+        HDDS_SCM_WAIT_TIME_AFTER_SAFE_MODE_EXIT, 10, TimeUnit.SECONDS);
     balancerConfiguration =
         conf.getObject(ContainerBalancerConfiguration.class);
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to