This is an automated email from the ASF dual-hosted git repository.
sarvekshayr 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 d1905e147a0 HDDS-15446. Expose Hard Min Free Space Threshold via JMX
(#10575)
d1905e147a0 is described below
commit d1905e147a067c11fcc84097d62c793d280af442
Author: Anurag Parvatikar <[email protected]>
AuthorDate: Wed Jun 24 17:32:52 2026 +0530
HDDS-15446. Expose Hard Min Free Space Threshold via JMX (#10575)
---
.../hadoop/ozone/container/common/volume/VolumeInfoMetrics.java | 6 ++++++
.../src/main/resources/webapps/hddsDatanode/dn-overview.html | 2 ++
.../container-service/src/main/resources/webapps/hddsDatanode/dn.js | 1 +
.../hadoop/ozone/container/common/volume/TestVolumeInfoMetrics.java | 2 ++
4 files changed, 11 insertions(+)
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/VolumeInfoMetrics.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/VolumeInfoMetrics.java
index c6e17d5cfd5..27996eb44b7 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/VolumeInfoMetrics.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/VolumeInfoMetrics.java
@@ -61,6 +61,11 @@ public class VolumeInfoMetrics implements MetricsSource {
Interns.info("MinFreeSpace",
"Minimum free space threshold (soft limit) reported to SCM, " +
"derived from hdds.datanode.volume.min.free.space.percent /
hdds.datanode.volume.min.free.space");
+ private static final MetricsInfo HARD_MIN_FREE_SPACE =
+ Interns.info("HardMinFreeSpace",
+ "Minimum free space threshold (hard limit) enforced locally for
writes, " +
+ "derived from hdds.datanode.volume.min.free.space.hard.limit.percent
" +
+ "/ hdds.datanode.volume.min.free.space");
private static final MetricsInfo NON_OZONE_USED =
Interns.info("NonOzoneUsed",
"Space on the filesystem consumed by non-Ozone workloads " +
@@ -254,6 +259,7 @@ public void getMetrics(MetricsCollector collector, boolean
all) {
.addGauge(FS_AVAILABLE, fsUsage.getAvailable())
.addGauge(FS_USED, fsUsage.getCapacity() - fsUsage.getAvailable())
.addGauge(MIN_FREE_SPACE,
volume.getReportedFreeSpaceToSpare(ozoneCapacity))
+ .addGauge(HARD_MIN_FREE_SPACE,
volume.getFreeSpaceToSpare(ozoneCapacity))
.addGauge(NON_OZONE_USED, VolumeUsage.getOtherUsed(fsUsage));
}
}
diff --git
a/hadoop-hdds/container-service/src/main/resources/webapps/hddsDatanode/dn-overview.html
b/hadoop-hdds/container-service/src/main/resources/webapps/hddsDatanode/dn-overview.html
index 9b15a0bf374..e25ce4a9c82 100644
---
a/hadoop-hdds/container-service/src/main/resources/webapps/hddsDatanode/dn-overview.html
+++
b/hadoop-hdds/container-service/src/main/resources/webapps/hddsDatanode/dn-overview.html
@@ -61,6 +61,7 @@ <h2>Volume Information</h2>
<th>Filesystem Available</th>
<th>Filesystem Used</th>
<th>Min Free Space</th>
+ <th>Hard Min Free Space</th>
<th>Non-Ozone Used</th>
<th>Containers</th>
<th>State</th>
@@ -79,6 +80,7 @@ <h2>Volume Information</h2>
<td>{{volumeInfo.FilesystemAvailable}}</td>
<td>{{volumeInfo.FilesystemUsed}}</td>
<td>{{volumeInfo.MinFreeSpace}}</td>
+ <td>{{volumeInfo.HardMinFreeSpace}}</td>
<td>{{volumeInfo.NonOzoneUsed}}</td>
<td>{{volumeInfo.Containers}}</td>
<td>{{volumeInfo["tag.VolumeState"]}}</td>
diff --git
a/hadoop-hdds/container-service/src/main/resources/webapps/hddsDatanode/dn.js
b/hadoop-hdds/container-service/src/main/resources/webapps/hddsDatanode/dn.js
index 3e6c36662dd..1f5ae99f15e 100644
---
a/hadoop-hdds/container-service/src/main/resources/webapps/hddsDatanode/dn.js
+++
b/hadoop-hdds/container-service/src/main/resources/webapps/hddsDatanode/dn.js
@@ -38,6 +38,7 @@
volume.FilesystemAvailable =
transform(volume.FilesystemAvailable);
volume.FilesystemUsed = transform(volume.FilesystemUsed);
volume.MinFreeSpace = transform(volume.MinFreeSpace);
+ volume.HardMinFreeSpace = transform(volume.HardMinFreeSpace);
volume.NonOzoneUsed = transform(volume.NonOzoneUsed);
})
});
diff --git
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/volume/TestVolumeInfoMetrics.java
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/volume/TestVolumeInfoMetrics.java
index bca6170d6b6..c428be693db 100644
---
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/volume/TestVolumeInfoMetrics.java
+++
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/volume/TestVolumeInfoMetrics.java
@@ -45,6 +45,7 @@ void testVolumeInfoMetricsExposeOzoneAndFilesystemGauges() {
when(volume.getCommittedBytes()).thenReturn(10L);
when(volume.getContainers()).thenReturn(3L);
when(volume.getReportedFreeSpaceToSpare(anyLong())).thenReturn(20L);
+ when(volume.getFreeSpaceToSpare(anyLong())).thenReturn(15L);
VolumeUsage volumeUsage = mock(VolumeUsage.class);
when(volume.getVolumeUsage()).thenReturn(volumeUsage);
@@ -80,6 +81,7 @@ void testVolumeInfoMetricsExposeOzoneAndFilesystemGauges() {
assertThat(findMetric(all, "FilesystemUsed")).isEqualTo(900L); //
FilesystemCapacity - FilesystemAvailable
assertThat(findMetric(all, "MinFreeSpace")).isEqualTo(20L);
+ assertThat(findMetric(all, "HardMinFreeSpace")).isEqualTo(15L);
// NonOzoneUsed = FilesystemUsed - OzoneUsed = 900 - 500
assertThat(findMetric(all, "NonOzoneUsed")).isEqualTo(400L);
} finally {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]