Skip to content

Commit 32a1e10

Browse files
authored
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
1 parent 52ce885 commit 32a1e10

File tree

4 files changed

+38
-12
lines changed

4 files changed

+38
-12
lines changed

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeInternalRPCServiceImpl.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,10 +1274,10 @@ private double getMemory(String gaugeName) {
12741274
private void sampleDiskLoad(TLoadSample loadSample) {
12751275
final CommonConfig commonConfig = CommonDescriptor.getInstance().getConfig();
12761276

1277-
double freeDisk =
1277+
double availableDisk =
12781278
MetricService.getInstance()
12791279
.getAutoGauge(
1280-
SystemMetric.SYS_DISK_FREE_SPACE.toString(),
1280+
SystemMetric.SYS_DISK_AVAILABLE_SPACE.toString(),
12811281
MetricLevel.CORE,
12821282
Tag.NAME.toString(),
12831283
SYSTEM)
@@ -1291,9 +1291,9 @@ private void sampleDiskLoad(TLoadSample loadSample) {
12911291
SYSTEM)
12921292
.value();
12931293

1294-
if (freeDisk != 0 && totalDisk != 0) {
1295-
double freeDiskRatio = freeDisk / totalDisk;
1296-
loadSample.setFreeDiskSpace(freeDisk);
1294+
if (availableDisk != 0 && totalDisk != 0) {
1295+
double freeDiskRatio = availableDisk / totalDisk;
1296+
loadSample.setFreeDiskSpace(availableDisk);
12971297
loadSample.setDiskUsageRate(1d - freeDiskRatio);
12981298
// Reset NodeStatus if necessary
12991299
if (freeDiskRatio < commonConfig.getDiskSpaceWarningThreshold()) {

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionUtils.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -470,10 +470,10 @@ public static boolean isDiskHasSpace() {
470470
}
471471

472472
public static boolean isDiskHasSpace(double redundancy) {
473-
double freeDisk =
473+
double availableDisk =
474474
MetricService.getInstance()
475475
.getAutoGauge(
476-
SystemMetric.SYS_DISK_FREE_SPACE.toString(),
476+
SystemMetric.SYS_DISK_AVAILABLE_SPACE.toString(),
477477
MetricLevel.CORE,
478478
Tag.NAME.toString(),
479479
SYSTEM)
@@ -487,8 +487,8 @@ public static boolean isDiskHasSpace(double redundancy) {
487487
SYSTEM)
488488
.value();
489489

490-
if (freeDisk != 0 && totalDisk != 0) {
491-
return freeDisk / totalDisk
490+
if (availableDisk != 0 && totalDisk != 0) {
491+
return availableDisk / totalDisk
492492
> CommonDescriptor.getInstance().getConfig().getDiskSpaceWarningThreshold() + redundancy;
493493
}
494494
return true;

iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/system/SystemMetrics.java

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public class SystemMetrics implements IMetricSet {
5050
private final Set<FileStore> fileStores = new HashSet<>();
5151
private final AtomicReference<List<String>> diskDirs =
5252
new AtomicReference<>(Collections.emptyList());
53+
private static final String FAILED_TO_STATISTIC = "Failed to statistic the size of {}, because";
5354

5455
public SystemMetrics() {
5556
this.osMxBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
@@ -204,6 +205,13 @@ private void collectSystemDiskInfo(AbstractMetricService metricService) {
204205
SystemMetrics::getSystemDiskFreeSpace,
205206
SystemTag.NAME.toString(),
206207
SYSTEM);
208+
metricService.createAutoGauge(
209+
SystemMetric.SYS_DISK_AVAILABLE_SPACE.toString(),
210+
MetricLevel.CORE,
211+
this,
212+
SystemMetrics::getSystemDiskAvailableSpace,
213+
SystemTag.NAME.toString(),
214+
SYSTEM);
207215
}
208216

209217
private void removeSystemDiskInfo(AbstractMetricService metricService) {
@@ -217,6 +225,11 @@ private void removeSystemDiskInfo(AbstractMetricService metricService) {
217225
SystemMetric.SYS_DISK_FREE_SPACE.toString(),
218226
SystemTag.NAME.toString(),
219227
SYSTEM);
228+
metricService.remove(
229+
MetricType.AUTO_GAUGE,
230+
SystemMetric.SYS_DISK_AVAILABLE_SPACE.toString(),
231+
SystemTag.NAME.toString(),
232+
SYSTEM);
220233

221234
diskDirs.get().clear();
222235
fileStores.clear();
@@ -228,7 +241,7 @@ public long getSystemDiskTotalSpace() {
228241
try {
229242
sysTotalSpace += fileStore.getTotalSpace();
230243
} catch (IOException e) {
231-
logger.error("Failed to statistic the size of {}, because", fileStore, e);
244+
logger.error(FAILED_TO_STATISTIC, fileStore, e);
232245
}
233246
}
234247
return sysTotalSpace;
@@ -238,14 +251,26 @@ public long getSystemDiskFreeSpace() {
238251
long sysFreeSpace = 0L;
239252
for (FileStore fileStore : fileStores) {
240253
try {
241-
sysFreeSpace += fileStore.getUsableSpace();
254+
sysFreeSpace += fileStore.getUnallocatedSpace();
242255
} catch (IOException e) {
243-
logger.error("Failed to statistic the size of {}, because", fileStore, e);
256+
logger.error(FAILED_TO_STATISTIC, fileStore, e);
244257
}
245258
}
246259
return sysFreeSpace;
247260
}
248261

262+
public long getSystemDiskAvailableSpace() {
263+
long sysAvailableSpace = 0L;
264+
for (FileStore fileStore : fileStores) {
265+
try {
266+
sysAvailableSpace += fileStore.getUsableSpace();
267+
} catch (IOException e) {
268+
logger.error(FAILED_TO_STATISTIC, fileStore, e);
269+
}
270+
}
271+
return sysAvailableSpace;
272+
}
273+
249274
public static SystemMetrics getInstance() {
250275
return SystemMetricsHolder.INSTANCE;
251276
}

iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/SystemMetric.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public enum SystemMetric {
5858
SYS_COMMITTED_VM_SIZE("sys_committed_vm_size"),
5959
SYS_DISK_TOTAL_SPACE("sys_disk_total_space"),
6060
SYS_DISK_FREE_SPACE("sys_disk_free_space"),
61+
SYS_DISK_AVAILABLE_SPACE("sys_disk_available_space"),
6162
// cpu related
6263
MODULE_CPU_USAGE("module_cpu_usage"),
6364
POOL_CPU_USAGE("pool_cpu_usage"),

0 commit comments

Comments
 (0)