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]