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

sammichen pushed a commit to branch HDDS-5713
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/HDDS-5713 by this push:
     new 0f1b034ffc HDDS-13547. [DiskBalancer] Change VolumeChoosingPolicy to 
DiskBalancerVolumeChoosingPolicy (#8913)
0f1b034ffc is described below

commit 0f1b034ffc0a8e1914da4041a30d16d06978b009
Author: Gargi Jaiswal <[email protected]>
AuthorDate: Thu Aug 7 13:57:23 2025 +0530

    HDDS-13547. [DiskBalancer] Change VolumeChoosingPolicy to 
DiskBalancerVolumeChoosingPolicy (#8913)
---
 .../ozone/container/diskbalancer/DiskBalancerService.java      | 10 +++++-----
 .../diskbalancer/policy/DefaultVolumeChoosingPolicy.java       |  6 ++++--
 ...oosingPolicy.java => DiskBalancerVolumeChoosingPolicy.java} |  2 +-
 .../hadoop/ozone/container/keyvalue/KeyValueContainer.java     |  1 +
 .../ozone/container/diskbalancer/TestDiskBalancerService.java  |  4 ++--
 .../apache/hadoop/ozone/scm/node/TestVolumeChoosingPolicy.java |  8 ++++----
 6 files changed, 17 insertions(+), 14 deletions(-)

diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerService.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerService.java
index efc06463d6..724ec8f9ff 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerService.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerService.java
@@ -55,7 +55,7 @@
 import org.apache.hadoop.ozone.container.common.volume.HddsVolume;
 import org.apache.hadoop.ozone.container.common.volume.MutableVolumeSet;
 import 
org.apache.hadoop.ozone.container.diskbalancer.policy.ContainerChoosingPolicy;
-import 
org.apache.hadoop.ozone.container.diskbalancer.policy.VolumeChoosingPolicy;
+import 
org.apache.hadoop.ozone.container.diskbalancer.policy.DiskBalancerVolumeChoosingPolicy;
 import org.apache.hadoop.ozone.container.keyvalue.KeyValueContainerData;
 import 
org.apache.hadoop.ozone.container.keyvalue.helpers.KeyValueContainerLocationUtil;
 import 
org.apache.hadoop.ozone.container.keyvalue.helpers.KeyValueContainerUtil;
@@ -109,7 +109,7 @@ public class DiskBalancerService extends BackgroundService {
   private Map<HddsVolume, Long> deltaSizes;
   private MutableVolumeSet volumeSet;
 
-  private VolumeChoosingPolicy volumeChoosingPolicy;
+  private DiskBalancerVolumeChoosingPolicy volumeChoosingPolicy;
   private ContainerChoosingPolicy containerChoosingPolicy;
   private final File diskBalancerInfoFile;
 
@@ -158,7 +158,7 @@ public DiskBalancerService(OzoneContainer ozoneContainer,
     volumeSet = ozoneContainer.getVolumeSet();
 
     try {
-      volumeChoosingPolicy = (VolumeChoosingPolicy)
+      volumeChoosingPolicy = (DiskBalancerVolumeChoosingPolicy)
           conf.getObject(DiskBalancerConfiguration.class)
           .getVolumeChoosingPolicyClass().newInstance();
       containerChoosingPolicy = (ContainerChoosingPolicy)
@@ -686,7 +686,7 @@ public ContainerChoosingPolicy getContainerChoosingPolicy() 
{
     return containerChoosingPolicy;
   }
 
-  public VolumeChoosingPolicy getVolumeChoosingPolicy() {
+  public DiskBalancerVolumeChoosingPolicy getVolumeChoosingPolicy() {
     return volumeChoosingPolicy;
   }
 
@@ -700,7 +700,7 @@ public DiskBalancerTask 
createDiskBalancerTask(ContainerData containerData, Hdds
   }
 
   @VisibleForTesting
-  public void setVolumeChoosingPolicy(VolumeChoosingPolicy 
volumeChoosingPolicy) {
+  public void setVolumeChoosingPolicy(DiskBalancerVolumeChoosingPolicy 
volumeChoosingPolicy) {
     this.volumeChoosingPolicy = volumeChoosingPolicy;
   }
 
diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/policy/DefaultVolumeChoosingPolicy.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/policy/DefaultVolumeChoosingPolicy.java
index a0166f9e2a..d867b3b0f2 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/policy/DefaultVolumeChoosingPolicy.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/policy/DefaultVolumeChoosingPolicy.java
@@ -34,7 +34,7 @@
  * Destination volumes use committedBytes to account for space already 
reserved.
  * Both deltaMap and committedBytes are considered to calculate usage.
  */
-public class DefaultVolumeChoosingPolicy implements VolumeChoosingPolicy {
+public class DefaultVolumeChoosingPolicy implements 
DiskBalancerVolumeChoosingPolicy {
 
   public static final Logger LOG = LoggerFactory.getLogger(
       DefaultVolumeChoosingPolicy.class);
@@ -44,6 +44,8 @@ public Pair<HddsVolume, HddsVolume> 
chooseVolume(MutableVolumeSet volumeSet,
       double threshold, Map<HddsVolume, Long> deltaMap) {
     double idealUsage = volumeSet.getIdealUsage();
 
+    // Threshold is given as a percentage
+    double normalizedThreshold = threshold / 100;
     List<HddsVolume> volumes = StorageVolumeUtil
         .getHddsVolumesList(volumeSet.getVolumesList())
         .stream()
@@ -51,7 +53,7 @@ public Pair<HddsVolume, HddsVolume> 
chooseVolume(MutableVolumeSet volumeSet,
             Math.abs(
                 ((double)((volume.getCurrentUsage().getCapacity() - 
volume.getCurrentUsage().getAvailable())
                     + deltaMap.getOrDefault(volume, 0L) + 
volume.getCommittedBytes()))
-                    / volume.getCurrentUsage().getCapacity() - idealUsage) >= 
threshold)
+                    / volume.getCurrentUsage().getCapacity() - idealUsage) >= 
normalizedThreshold)
         .sorted((v1, v2) ->
             Double.compare(
                 (double) ((v2.getCurrentUsage().getCapacity() - 
v2.getCurrentUsage().getAvailable())
diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/policy/VolumeChoosingPolicy.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/policy/DiskBalancerVolumeChoosingPolicy.java
similarity index 96%
rename from 
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/policy/VolumeChoosingPolicy.java
rename to 
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/policy/DiskBalancerVolumeChoosingPolicy.java
index 2f5a202a5e..7bb805f464 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/policy/VolumeChoosingPolicy.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/policy/DiskBalancerVolumeChoosingPolicy.java
@@ -25,7 +25,7 @@
 /**
  * This interface specifies the policy for choosing volumes to balance.
  */
-public interface VolumeChoosingPolicy {
+public interface DiskBalancerVolumeChoosingPolicy {
   /**
    * Choose a pair of volumes for balancing.
    *
diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainer.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainer.java
index ad28798953..3b952c5952 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainer.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainer.java
@@ -975,6 +975,7 @@ public void copyContainerData(Path destination) throws 
IOException {
     } catch (Exception e) {
       LOG.error("Got exception when copying container {} to {}",
           containerData.getContainerID(), destination, e);
+      throw e;
     } finally {
       if (lock.isWriteLockedByCurrentThread()) {
         writeUnlock();
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/diskbalancer/TestDiskBalancerService.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/diskbalancer/TestDiskBalancerService.java
index 2795e031b6..07d05fcb0b 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/diskbalancer/TestDiskBalancerService.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/diskbalancer/TestDiskBalancerService.java
@@ -52,7 +52,7 @@
 import 
org.apache.hadoop.ozone.container.diskbalancer.policy.ContainerChoosingPolicy;
 import 
org.apache.hadoop.ozone.container.diskbalancer.policy.DefaultContainerChoosingPolicy;
 import 
org.apache.hadoop.ozone.container.diskbalancer.policy.DefaultVolumeChoosingPolicy;
-import 
org.apache.hadoop.ozone.container.diskbalancer.policy.VolumeChoosingPolicy;
+import 
org.apache.hadoop.ozone.container.diskbalancer.policy.DiskBalancerVolumeChoosingPolicy;
 import org.apache.hadoop.ozone.container.keyvalue.ContainerTestVersionInfo;
 import org.apache.hadoop.ozone.container.keyvalue.KeyValueHandler;
 import org.apache.hadoop.ozone.container.keyvalue.helpers.BlockUtils;
@@ -275,7 +275,7 @@ public void testConcurrentTasksNotExceedThreadLimit() 
throws Exception {
         false, DiskBalancerVersion.DEFAULT_VERSION);
     svc.refresh(info);
 
-    VolumeChoosingPolicy volumePolicy = mock(VolumeChoosingPolicy.class);
+    DiskBalancerVolumeChoosingPolicy volumePolicy = 
mock(DiskBalancerVolumeChoosingPolicy.class);
     ContainerChoosingPolicy containerPolicy = 
mock(ContainerChoosingPolicy.class);
     svc.setVolumeChoosingPolicy(volumePolicy);
     svc.setContainerChoosingPolicy(containerPolicy);
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestVolumeChoosingPolicy.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestVolumeChoosingPolicy.java
index 9f07588c20..e300f8da6e 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestVolumeChoosingPolicy.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestVolumeChoosingPolicy.java
@@ -49,7 +49,7 @@
 import org.apache.hadoop.ozone.container.common.volume.MutableVolumeSet;
 import org.apache.hadoop.ozone.container.common.volume.StorageVolume;
 import 
org.apache.hadoop.ozone.container.diskbalancer.policy.DefaultVolumeChoosingPolicy;
-import 
org.apache.hadoop.ozone.container.diskbalancer.policy.VolumeChoosingPolicy;
+import 
org.apache.hadoop.ozone.container.diskbalancer.policy.DiskBalancerVolumeChoosingPolicy;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -64,7 +64,7 @@ public class TestVolumeChoosingPolicy {
   private static final int NUM_VOLUMES = 20;
   private static final int NUM_THREADS = 10;
   private static final int NUM_ITERATIONS = 10000;
-  private static final double THRESHOLD = 0.1; // 10% threshold
+  private static final double THRESHOLD = 10; // 10% threshold
 
   private static final OzoneConfiguration CONF = new OzoneConfiguration();
 
@@ -73,7 +73,7 @@ public class TestVolumeChoosingPolicy {
 
   private MutableVolumeSet volumeSet;
   private List<HddsVolume> hddsVolumes;
-  private VolumeChoosingPolicy volumeChoosingPolicy;
+  private DiskBalancerVolumeChoosingPolicy volumeChoosingPolicy;
   private ExecutorService executor;
 
   // delta sizes for source volumes
@@ -118,7 +118,7 @@ public void testConcurrentVolumeChoosingPerformance() 
throws Exception {
    * pairChosenCount: Number of successful volume pair choices from the policy.
    * FailureCount: Failures due to any exceptions thrown during volume choice 
or null return.
    */
-  private void testPolicyPerformance(String policyName, VolumeChoosingPolicy 
policy) throws Exception {
+  private void testPolicyPerformance(String policyName, 
DiskBalancerVolumeChoosingPolicy policy) throws Exception {
     CountDownLatch latch = new CountDownLatch(NUM_THREADS);
     AtomicInteger pairChosenCount = new AtomicInteger(0);
     AtomicInteger pairNotChosenCount = new AtomicInteger(0);


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

Reply via email to