fix code smell
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 1dfcdcb..3ecf6f3 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.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 @@ 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 d029122..9c45186 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 @@ 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 8384916..f829974 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 @@ 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 2ec407a..ce38095 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 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 563627f..cf590e1 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.LoggerFactory; import java.io.BufferedReader; +import java.io.File; import java.io.IOException; import java.io.InputStreamReader; @@ -48,6 +49,13 @@ 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 @@ } 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();