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 953e718872 HDDS-12565. Treat volumeFreeSpaceToSpare as reserved space
(#8086)
953e718872 is described below
commit 953e7188727c4fd95e81c5b1b2291c679f5a213e
Author: Peter Lee <[email protected]>
AuthorDate: Wed Mar 19 15:50:09 2025 +0800
HDDS-12565. Treat volumeFreeSpaceToSpare as reserved space (#8086)
---
.../hadoop/ozone/container/common/impl/HddsDispatcher.java | 10 +++-------
.../hadoop/ozone/container/common/volume/VolumeUsage.java | 3 +--
.../hadoop/ozone/container/common/impl/TestHddsDispatcher.java | 5 +++--
3 files changed, 7 insertions(+), 11 deletions(-)
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
index a11eb204aa..dc8fcde3fb 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
@@ -619,13 +619,9 @@ private boolean isVolumeFull(Container container) {
if (isOpen) {
HddsVolume volume = container.getContainerData().getVolume();
SpaceUsageSource usage = volume.getCurrentUsage();
- long volumeCapacity = usage.getCapacity();
- long volumeFreeSpaceToSpare =
- freeSpaceCalculator.get(volumeCapacity);
- long volumeFree = usage.getAvailable();
- long volumeCommitted = volume.getCommittedBytes();
- long volumeAvailable = volumeFree - volumeCommitted;
- return (volumeAvailable <= volumeFreeSpaceToSpare);
+ long volumeFreeSpaceToSpare =
freeSpaceCalculator.get(usage.getCapacity());
+ return !VolumeUsage.hasVolumeEnoughSpace(usage.getAvailable(),
volume.getCommittedBytes(), 0,
+ volumeFreeSpaceToSpare);
}
return false;
}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/VolumeUsage.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/VolumeUsage.java
index b65d40ee75..531886c744 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/VolumeUsage.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/VolumeUsage.java
@@ -184,8 +184,7 @@ public static boolean hasVolumeEnoughSpace(long
volumeAvailableSpace,
long volumeCommittedBytesCount,
long requiredSpace,
long volumeFreeSpaceToSpare) {
- return (volumeAvailableSpace - volumeCommittedBytesCount) >
- Math.max(requiredSpace, volumeFreeSpaceToSpare);
+ return (volumeAvailableSpace - volumeCommittedBytesCount -
volumeFreeSpaceToSpare) > requiredSpace;
}
private static long getReserved(ConfigurationSource conf, String rootDir,
diff --git
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/impl/TestHddsDispatcher.java
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/impl/TestHddsDispatcher.java
index 257c104ce7..5aca3bf1a3 100644
---
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/impl/TestHddsDispatcher.java
+++
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/impl/TestHddsDispatcher.java
@@ -252,9 +252,9 @@ public void testContainerCloseActionWhenVolumeFull(
HddsVolume.Builder volumeBuilder =
new HddsVolume.Builder(testDirPath).datanodeUuid(dd.getUuidString())
.conf(conf).usageCheckFactory(MockSpaceUsageCheckFactory.NONE);
- // state of cluster : available (140) > 100 ,datanode volume
+ // state of cluster : available (160) > 100 ,datanode volume
// utilisation threshold not yet reached. container creates are successful.
- AtomicLong usedSpace = new AtomicLong(360);
+ AtomicLong usedSpace = new AtomicLong(340);
SpaceUsageSource spaceUsage = MockSpaceUsageSource.of(500, usedSpace);
SpaceUsageCheckFactory factory = MockSpaceUsageCheckFactory.of(
@@ -268,6 +268,7 @@ public void testContainerCloseActionWhenVolumeFull(
ContainerSet containerSet = newContainerSet();
StateContext context = ContainerTestUtils.getMockContext(dd, conf);
// create a 50 byte container
+ // available (160) > 100 (min free space) + 50 (container size)
KeyValueContainerData containerData = new KeyValueContainerData(1L,
layoutVersion,
50, UUID.randomUUID().toString(),
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]