This is an automated email from the ASF dual-hosted git repository.
ivandika 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 782ad62057 HDDS-11388. Fix unnecessary call to the DB for
ContainerBalancer#getBalancerStatusInfo (#7224)
782ad62057 is described below
commit 782ad6205740430d6f4e08361e02f36f4040eef6
Author: Ivan Andika <[email protected]>
AuthorDate: Thu Oct 24 22:51:39 2024 +0800
HDDS-11388. Fix unnecessary call to the DB for
ContainerBalancer#getBalancerStatusInfo (#7224)
---
.../scm/container/balancer/ContainerBalancer.java | 20 +++++++++++---------
.../container/balancer/TestContainerBalancer.java | 17 +++++++++++++++++
.../src/main/smoketest/balancer/testBalancer.robot | 1 -
3 files changed, 28 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 3dddd67bd8..2f6b8a7f81 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
@@ -183,17 +183,19 @@ public class ContainerBalancer extends StatefulService {
* @return balancer status info if balancer started
*/
public ContainerBalancerStatusInfo getBalancerStatusInfo() throws
IOException {
- if (isBalancerRunning()) {
- ContainerBalancerConfigurationProto configProto =
readConfiguration(ContainerBalancerConfigurationProto.class);
- return new ContainerBalancerStatusInfo(
- this.startedAt,
- configProto,
- task.getCurrentIterationsStatistic()
- );
- } else {
+ lock.lock();
+ try {
+ if (isBalancerRunning()) {
+ return new ContainerBalancerStatusInfo(
+ this.startedAt,
+ config.toProtobufBuilder().setShouldRun(true).build(),
+ task.getCurrentIterationsStatistic()
+ );
+ }
return null;
+ } finally {
+ lock.unlock();
}
-
}
/**
* Checks if ContainerBalancer is in valid state to call stop.
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 662322b42f..c779288747 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
@@ -44,6 +44,7 @@ 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.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertThrowsExactly;
import static org.junit.jupiter.api.Assertions.assertSame;
@@ -257,6 +258,22 @@ public class TestContainerBalancer {
stopBalancer();
}
+ @Test
+ public void testGetBalancerStatusInfo() throws Exception {
+ startBalancer(balancerConfiguration);
+ assertSame(ContainerBalancerTask.Status.RUNNING,
containerBalancer.getBalancerStatus());
+
+ // Assert the configuration fields that were explicitly set
+ ContainerBalancerStatusInfo status =
containerBalancer.getBalancerStatusInfo();
+ assertEquals(balancerConfiguration.getThreshold(),
+
Double.parseDouble(status.getConfiguration().getUtilizationThreshold()));
+ assertEquals(balancerConfiguration.getIterations(),
status.getConfiguration().getIterations());
+ assertEquals(balancerConfiguration.getTriggerDuEnable(),
status.getConfiguration().getTriggerDuBeforeMoveEnable());
+
+ stopBalancer();
+ assertSame(ContainerBalancerTask.Status.STOPPED,
containerBalancer.getBalancerStatus());
+ }
+
private void startBalancer(ContainerBalancerConfiguration config)
throws IllegalContainerBalancerStateException, IOException,
InvalidContainerBalancerConfigurationException, TimeoutException {
diff --git a/hadoop-ozone/dist/src/main/smoketest/balancer/testBalancer.robot
b/hadoop-ozone/dist/src/main/smoketest/balancer/testBalancer.robot
index 06d8a3416f..e7be2a2b66 100644
--- a/hadoop-ozone/dist/src/main/smoketest/balancer/testBalancer.robot
+++ b/hadoop-ozone/dist/src/main/smoketest/balancer/testBalancer.robot
@@ -67,7 +67,6 @@ Run Container Balancer
Wait Finish Of Balancing
${result} = Execute ozone admin
containerbalancer status
- Should Contain ${result}
ContainerBalancer is Running.
Wait Until Keyword Succeeds 6min 10sec
ContainerBalancer is Not Running
Sleep 60000ms
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]