This is an automated email from the ASF dual-hosted git repository. marklau99 pushed a commit to branch optimize-metrics in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit a903c52165bf53953c2f30fd4a082534dea7d44b Author: Liu Xuxin <[email protected]> AuthorDate: Fri Apr 28 17:58:09 2023 +0800 fix code smell --- .../metrics/metricsets/jvm/JvmThreadMetrics.java | 6 +++--- .../performer/impl/FastCompactionPerformer.java | 2 -- .../performer/impl/ReadPointCompactionPerformer.java | 1 - .../readchunk/AlignedSeriesCompactionExecutor.java | 1 - .../apache/iotdb/db/service/metrics/FileMetrics.java | 20 ++++++++++++++++++-- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmThreadMetrics.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmThreadMetrics.java index 1dfcdcbb93c..3ecf6f35fb9 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmThreadMetrics.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmThreadMetrics.java @@ -28,7 +28,7 @@ import java.lang.management.ManagementFactory; import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean; import java.util.Arrays; -import java.util.HashMap; +import java.util.EnumMap; import java.util.List; import java.util.Map; @@ -36,8 +36,8 @@ import java.util.Map; public class JvmThreadMetrics implements IMetricSet { private static long lastUpdateTime = 0L; private static final long UPDATE_INTERVAL = 10_000L; - private static Map<Thread.State, Integer> threadStateCountMap = - new HashMap<>(Thread.State.values().length + 1, 1.0f); + private static final Map<Thread.State, Integer> threadStateCountMap = + new EnumMap<>(Thread.State.class); @Override public void bindTo(AbstractMetricService metricService) { diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/performer/impl/FastCompactionPerformer.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/performer/impl/FastCompactionPerformer.java index d029122f0d1..9c451864e68 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/performer/impl/FastCompactionPerformer.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/performer/impl/FastCompactionPerformer.java @@ -81,8 +81,6 @@ public class FastCompactionPerformer private boolean isCrossCompaction; - private long tempFileSize = 0L; - public FastCompactionPerformer( List<TsFileResource> seqFiles, List<TsFileResource> unseqFiles, diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/performer/impl/ReadPointCompactionPerformer.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/performer/impl/ReadPointCompactionPerformer.java index 8384916b92a..f8299744585 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/performer/impl/ReadPointCompactionPerformer.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/performer/impl/ReadPointCompactionPerformer.java @@ -75,7 +75,6 @@ public class ReadPointCompactionPerformer private CompactionTaskSummary summary; private List<TsFileResource> targetFiles = Collections.emptyList(); - private long tempFileSize = 0L; public ReadPointCompactionPerformer( List<TsFileResource> seqFiles, diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/utils/executor/readchunk/AlignedSeriesCompactionExecutor.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/utils/executor/readchunk/AlignedSeriesCompactionExecutor.java index 2ec407ad29e..ce380957cd8 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/utils/executor/readchunk/AlignedSeriesCompactionExecutor.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/execute/utils/executor/readchunk/AlignedSeriesCompactionExecutor.java @@ -131,7 +131,6 @@ public class AlignedSeriesCompactionExecutor { } public void execute() throws IOException { - long originTempFileSize = writer.getPos(); while (readerAndChunkMetadataList.size() > 0) { Pair<TsFileSequenceReader, List<AlignedChunkMetadata>> readerListPair = readerAndChunkMetadataList.removeFirst(); diff --git a/server/src/main/java/org/apache/iotdb/db/service/metrics/FileMetrics.java b/server/src/main/java/org/apache/iotdb/db/service/metrics/FileMetrics.java index 563627fa9e4..cf590e1ae20 100644 --- a/server/src/main/java/org/apache/iotdb/db/service/metrics/FileMetrics.java +++ b/server/src/main/java/org/apache/iotdb/db/service/metrics/FileMetrics.java @@ -35,6 +35,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.BufferedReader; +import java.io.File; import java.io.IOException; import java.io.InputStreamReader; @@ -48,6 +49,13 @@ public class FileMetrics implements IMetricSet { private final Runtime runtime = Runtime.getRuntime(); private String[] getOpenFileNumberCommand; + @SuppressWarnings("squid:S1075") + private String fileHandlerCntPathInLinux = "/proc/%s/fd"; + + public FileMetrics() { + fileHandlerCntPathInLinux = String.format(fileHandlerCntPathInLinux, METRIC_CONFIG.getPid()); + } + @Override public void bindTo(AbstractMetricService metricService) { bindTsFileMetrics(metricService); @@ -245,9 +253,17 @@ public class FileMetrics implements IMetricSet { } private long getOpenFileHandlersNumber() { + long fdCount = 0; try { - if ((METRIC_CONFIG.getSystemType() == SystemType.LINUX - || METRIC_CONFIG.getSystemType() == SystemType.MAC) + if (METRIC_CONFIG.getSystemType() == SystemType.LINUX) { + // count the fd in the system directory instead of + // calling runtime.exec() which could be much slower + File fdDir = new File(fileHandlerCntPathInLinux); + if (fdDir.exists()) { + File[] fds = fdDir.listFiles(); + fdCount = fds == null ? 0 : fds.length; + } + } else if ((METRIC_CONFIG.getSystemType() == SystemType.MAC) && METRIC_CONFIG.getPid().length() != 0) { Process process = runtime.exec(getOpenFileNumberCommand); StringBuilder result = new StringBuilder();
