You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2022/08/18 06:45:38 UTC
[iotdb] branch master updated: [IOTDB-4143] Fix the statistic of count of wal files. (#7039)
This is an automated email from the ASF dual-hosted git repository.
haonan 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 e6bd879eaf [IOTDB-4143] Fix the statistic of count of wal files. (#7039)
e6bd879eaf is described below
commit e6bd879eafbe41da59ee685e0cfa870d2c17235f
Author: ZhangHongYin <46...@users.noreply.github.com>
AuthorDate: Thu Aug 18 14:45:33 2022 +0800
[IOTDB-4143] Fix the statistic of count of wal files. (#7039)
---
.../db/service/metrics/predefined/FileMetrics.java | 65 +++++++++++++++-------
1 file changed, 46 insertions(+), 19 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/service/metrics/predefined/FileMetrics.java b/server/src/main/java/org/apache/iotdb/db/service/metrics/predefined/FileMetrics.java
index 0c490ce4e2..d92eab30c3 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/metrics/predefined/FileMetrics.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/metrics/predefined/FileMetrics.java
@@ -32,13 +32,20 @@ import org.apache.iotdb.metrics.predefined.IMetricSet;
import org.apache.iotdb.metrics.predefined.PredefinedMetric;
import org.apache.iotdb.metrics.utils.MetricLevel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import java.io.File;
+import java.io.UncheckedIOException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.stream.Stream;
public class FileMetrics implements IMetricSet {
+ private static final Logger logger = LoggerFactory.getLogger(FileMetrics.class);
+ private final String[] walDirs = IoTDBDescriptor.getInstance().getConfig().getWalDirs();
+ private final String[] dataDirs = IoTDBDescriptor.getInstance().getConfig().getDataDirs();
private final ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
private long walFileTotalSize = 0L;
private long walFileTotalCount = 0L;
@@ -138,18 +145,30 @@ public class FileMetrics implements IMetricSet {
.mapToLong(
dir -> {
File walFolder = new File(dir);
- File[] walNodeFolders = walFolder.listFiles(File::isDirectory);
- long result = 0L;
- if (null != walNodeFolders) {
- for (File walNodeFolder : walNodeFolders) {
- if (walNodeFolder.exists() && walNodeFolder.isDirectory()) {
- result +=
- org.apache.commons.io.FileUtils.listFiles(walNodeFolder, null, true)
- .size();
+ if (walFolder.exists()) {
+ File[] walNodeFolders = walFolder.listFiles(File::isDirectory);
+ long result = 0L;
+ if (null != walNodeFolders) {
+ for (File walNodeFolder : walNodeFolders) {
+ if (walNodeFolder.exists() && walNodeFolder.isDirectory()) {
+ try {
+ result +=
+ org.apache.commons.io.FileUtils.listFiles(walFolder, null, true)
+ .size();
+ } catch (UncheckedIOException exception) {
+ // do nothing
+ logger.debug(
+ "Failed when count wal folder {}: ",
+ walNodeFolder.getName(),
+ exception);
+ }
+ }
}
}
+ return result;
+ } else {
+ return 0L;
}
- return result;
})
.sum();
sequenceFileTotalCount =
@@ -159,12 +178,16 @@ public class FileMetrics implements IMetricSet {
dir += File.separator + IoTDBConstant.SEQUENCE_FLODER_NAME;
File folder = new File(dir);
if (folder.exists()) {
- return org.apache.commons.io.FileUtils.listFiles(
- new File(dir), new String[] {"tsfile"}, true)
- .size();
- } else {
- return 0L;
+ try {
+ return org.apache.commons.io.FileUtils.listFiles(
+ new File(dir), new String[] {"tsfile"}, true)
+ .size();
+ } catch (UncheckedIOException exception) {
+ // do nothing
+ logger.debug("Failed when count sequence tsfile: ", exception);
+ }
}
+ return 0L;
})
.sum();
unsequenceFileTotalCount =
@@ -174,12 +197,16 @@ public class FileMetrics implements IMetricSet {
dir += File.separator + IoTDBConstant.UNSEQUENCE_FLODER_NAME;
File folder = new File(dir);
if (folder.exists()) {
- return org.apache.commons.io.FileUtils.listFiles(
- new File(dir), new String[] {"tsfile"}, true)
- .size();
- } else {
- return 0L;
+ try {
+ return org.apache.commons.io.FileUtils.listFiles(
+ new File(dir), new String[] {"tsfile"}, true)
+ .size();
+ } catch (UncheckedIOException exception) {
+ // do nothing
+ logger.debug("Failed when count unsequence tsfile: ", exception);
+ }
}
+ return 0L;
})
.sum();
}