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();
   }