This is an automated email from the ASF dual-hosted git repository.
spricoder pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 32a1e10b2e4 Fix SYS_DISK_FREE_SPACE metric and add SYS_AVAILABLE_SPACE
metric (#11289)
32a1e10b2e4 is described below
commit 32a1e10b2e40684bd4cd3d3f88603afddfa58ad2
Author: ZhangHongYin <[email protected]>
AuthorDate: Thu Oct 12 09:22:45 2023 -0500
Fix SYS_DISK_FREE_SPACE metric and add SYS_AVAILABLE_SPACE metric (#11289)
* 1. Optimize the name of method
2. Add remove metric set when leader change
* Add remove
* Rename
* Fix code smell
* Fix param name
* Fix param name
---
.../impl/DataNodeInternalRPCServiceImpl.java | 10 +++----
.../compaction/execute/utils/CompactionUtils.java | 8 +++---
.../metrics/metricsets/system/SystemMetrics.java | 31 +++++++++++++++++++---
.../apache/iotdb/metrics/utils/SystemMetric.java | 1 +
4 files changed, 38 insertions(+), 12 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
index 084662c9f8a..884469be6cf 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java
@@ -1274,10 +1274,10 @@ public class DataNodeInternalRPCServiceImpl implements
IDataNodeRPCService.Iface
private void sampleDiskLoad(TLoadSample loadSample) {
final CommonConfig commonConfig =
CommonDescriptor.getInstance().getConfig();
- double freeDisk =
+ double availableDisk =
MetricService.getInstance()
.getAutoGauge(
- SystemMetric.SYS_DISK_FREE_SPACE.toString(),
+ SystemMetric.SYS_DISK_AVAILABLE_SPACE.toString(),
MetricLevel.CORE,
Tag.NAME.toString(),
SYSTEM)
@@ -1291,9 +1291,9 @@ public class DataNodeInternalRPCServiceImpl implements
IDataNodeRPCService.Iface
SYSTEM)
.value();
- if (freeDisk != 0 && totalDisk != 0) {
- double freeDiskRatio = freeDisk / totalDisk;
- loadSample.setFreeDiskSpace(freeDisk);
+ if (availableDisk != 0 && totalDisk != 0) {
+ double freeDiskRatio = availableDisk / totalDisk;
+ loadSample.setFreeDiskSpace(availableDisk);
loadSample.setDiskUsageRate(1d - freeDiskRatio);
// Reset NodeStatus if necessary
if (freeDiskRatio < commonConfig.getDiskSpaceWarningThreshold()) {
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionUtils.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionUtils.java
index 76e4dd4e813..a733d80941d 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionUtils.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionUtils.java
@@ -470,10 +470,10 @@ public class CompactionUtils {
}
public static boolean isDiskHasSpace(double redundancy) {
- double freeDisk =
+ double availableDisk =
MetricService.getInstance()
.getAutoGauge(
- SystemMetric.SYS_DISK_FREE_SPACE.toString(),
+ SystemMetric.SYS_DISK_AVAILABLE_SPACE.toString(),
MetricLevel.CORE,
Tag.NAME.toString(),
SYSTEM)
@@ -487,8 +487,8 @@ public class CompactionUtils {
SYSTEM)
.value();
- if (freeDisk != 0 && totalDisk != 0) {
- return freeDisk / totalDisk
+ if (availableDisk != 0 && totalDisk != 0) {
+ return availableDisk / totalDisk
>
CommonDescriptor.getInstance().getConfig().getDiskSpaceWarningThreshold() +
redundancy;
}
return true;
diff --git
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/system/SystemMetrics.java
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/system/SystemMetrics.java
index d61b7b71120..dd9054dd9a0 100644
---
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/system/SystemMetrics.java
+++
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/system/SystemMetrics.java
@@ -50,6 +50,7 @@ public class SystemMetrics implements IMetricSet {
private final Set<FileStore> fileStores = new HashSet<>();
private final AtomicReference<List<String>> diskDirs =
new AtomicReference<>(Collections.emptyList());
+ private static final String FAILED_TO_STATISTIC = "Failed to statistic the
size of {}, because";
public SystemMetrics() {
this.osMxBean = (OperatingSystemMXBean)
ManagementFactory.getOperatingSystemMXBean();
@@ -204,6 +205,13 @@ public class SystemMetrics implements IMetricSet {
SystemMetrics::getSystemDiskFreeSpace,
SystemTag.NAME.toString(),
SYSTEM);
+ metricService.createAutoGauge(
+ SystemMetric.SYS_DISK_AVAILABLE_SPACE.toString(),
+ MetricLevel.CORE,
+ this,
+ SystemMetrics::getSystemDiskAvailableSpace,
+ SystemTag.NAME.toString(),
+ SYSTEM);
}
private void removeSystemDiskInfo(AbstractMetricService metricService) {
@@ -217,6 +225,11 @@ public class SystemMetrics implements IMetricSet {
SystemMetric.SYS_DISK_FREE_SPACE.toString(),
SystemTag.NAME.toString(),
SYSTEM);
+ metricService.remove(
+ MetricType.AUTO_GAUGE,
+ SystemMetric.SYS_DISK_AVAILABLE_SPACE.toString(),
+ SystemTag.NAME.toString(),
+ SYSTEM);
diskDirs.get().clear();
fileStores.clear();
@@ -228,7 +241,7 @@ public class SystemMetrics implements IMetricSet {
try {
sysTotalSpace += fileStore.getTotalSpace();
} catch (IOException e) {
- logger.error("Failed to statistic the size of {}, because", fileStore,
e);
+ logger.error(FAILED_TO_STATISTIC, fileStore, e);
}
}
return sysTotalSpace;
@@ -238,14 +251,26 @@ public class SystemMetrics implements IMetricSet {
long sysFreeSpace = 0L;
for (FileStore fileStore : fileStores) {
try {
- sysFreeSpace += fileStore.getUsableSpace();
+ sysFreeSpace += fileStore.getUnallocatedSpace();
} catch (IOException e) {
- logger.error("Failed to statistic the size of {}, because", fileStore,
e);
+ logger.error(FAILED_TO_STATISTIC, fileStore, e);
}
}
return sysFreeSpace;
}
+ public long getSystemDiskAvailableSpace() {
+ long sysAvailableSpace = 0L;
+ for (FileStore fileStore : fileStores) {
+ try {
+ sysAvailableSpace += fileStore.getUsableSpace();
+ } catch (IOException e) {
+ logger.error(FAILED_TO_STATISTIC, fileStore, e);
+ }
+ }
+ return sysAvailableSpace;
+ }
+
public static SystemMetrics getInstance() {
return SystemMetricsHolder.INSTANCE;
}
diff --git
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/SystemMetric.java
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/SystemMetric.java
index e04586c0f11..2247628169c 100644
---
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/SystemMetric.java
+++
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/SystemMetric.java
@@ -58,6 +58,7 @@ public enum SystemMetric {
SYS_COMMITTED_VM_SIZE("sys_committed_vm_size"),
SYS_DISK_TOTAL_SPACE("sys_disk_total_space"),
SYS_DISK_FREE_SPACE("sys_disk_free_space"),
+ SYS_DISK_AVAILABLE_SPACE("sys_disk_available_space"),
// cpu related
MODULE_CPU_USAGE("module_cpu_usage"),
POOL_CPU_USAGE("pool_cpu_usage"),