This is an automated email from the ASF dual-hosted git repository.
ChenSammi 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 bf68f20f867 HDDS-15362. [DiskBalancer] Handle zero-capacity volumes in
status report. (#10355)
bf68f20f867 is described below
commit bf68f20f867de2281e0bcdf251308eabe1371587
Author: slfan1989 <[email protected]>
AuthorDate: Fri May 29 14:24:43 2026 +0800
HDDS-15362. [DiskBalancer] Handle zero-capacity volumes in status report.
(#10355)
---
.../diskbalancer/DiskBalancerVolumeCalculation.java | 9 +++++----
.../TestDiskBalancerVolumeCalculation.java | 20 ++++++++++++++++++++
2 files changed, 25 insertions(+), 4 deletions(-)
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerVolumeCalculation.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerVolumeCalculation.java
index 6e6d662f14d..071e43c5187 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerVolumeCalculation.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerVolumeCalculation.java
@@ -22,7 +22,6 @@
import java.util.List;
import java.util.Map;
-import java.util.Objects;
import java.util.stream.Collectors;
import org.apache.hadoop.hdds.fs.SpaceUsageSource;
import org.apache.hadoop.ozone.container.common.volume.HddsVolume;
@@ -167,13 +166,15 @@ public static final class VolumeFixedUsage {
private final HddsVolume volume;
private final SpaceUsageSource.Fixed usage;
private final long effectiveUsed;
- private final Double utilization;
+ private final double utilization;
private VolumeFixedUsage(HddsVolume volume, long delta) {
this.volume = volume;
this.usage = volume.getCurrentUsage();
this.effectiveUsed = computeEffectiveUsage(usage,
volume.getCommittedBytes(), delta);
- this.utilization = usage.getCapacity() > 0 ? computeUtilization(usage,
volume.getCommittedBytes(), delta) : null;
+ this.utilization = usage.getCapacity() > 0
+ ? computeUtilization(usage, volume.getCommittedBytes(), delta)
+ : 0.0;
}
public HddsVolume getVolume() {
@@ -189,7 +190,7 @@ public long getEffectiveUsed() {
}
public double getUtilization() {
- return Objects.requireNonNull(utilization, "utilization == null");
+ return utilization;
}
public long computeUsableSpace() {
diff --git
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/diskbalancer/TestDiskBalancerVolumeCalculation.java
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/diskbalancer/TestDiskBalancerVolumeCalculation.java
index a32da8a3de9..4289af7afb7 100644
---
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/diskbalancer/TestDiskBalancerVolumeCalculation.java
+++
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/diskbalancer/TestDiskBalancerVolumeCalculation.java
@@ -83,6 +83,26 @@ void calculateVolumeDataDensityIgnoresZeroCapacityVolumes()
Arrays.asList(zeroCapacity, lowUsage, highUsage)), 0.0);
}
+ @Test
+ void getUtilizationReturnsZeroForZeroCapacityVolume()
+ throws IOException {
+ HddsVolume volume = createVolume("zero-capacity-utilization", 0, 0);
+
+ assertEquals(0.0, DiskBalancerVolumeCalculation.newVolumeFixedUsage(
+ volume, null).getUtilization());
+ }
+
+ @Test
+ void buildVolumeReportProtoReportsZeroUtilizationForZeroCapacityVolume()
+ throws IOException {
+ HddsVolume volume = createVolume("zero-capacity-report", 0, 0);
+
+ assertEquals(0.0, DiskBalancerService.buildVolumeReportProto(
+ Collections.singletonList(
+ DiskBalancerVolumeCalculation.newVolumeFixedUsage(volume, null)))
+ .get(0).getUtilization());
+ }
+
@Test
void getIdealUsageRejectsNegativeCapacity() throws IOException {
HddsVolume negativeCapacityVolume = createVolume(
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]