This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch ty/TableModelGrammar
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit b5120f052014083d68ba2d30ddf35261918c8691
Author: shuwenwei <[email protected]>
AuthorDate: Wed Jul 24 11:19:05 2024 +0800

    Fix sonar bugs (#13003)
    
    (cherry picked from commit ddd8d4d7533dc3514ff5a4419cfa39e55875ea08)
---
 .../apache/iotdb/opcua/ClientExampleRunner.java    |   2 +
 .../apache/iotdb/SubscriptionSessionExample.java   |  52 ++++----
 .../java/org/apache/iotdb/tool/ExportData.java     | 134 ++++++++++----------
 .../java/org/apache/iotdb/tool/ImportData.java     |   2 +-
 .../java/org/apache/iotdb/tool/ImportTsFile.java   |   5 +
 .../org/apache/iotdb/tool/IoTDBDataBackTool.java   |  19 +--
 .../iotdb/rpc/subscription/config/TopicConfig.java |  16 +--
 .../exception/SubscriptionConnectionException.java |   5 +
 .../SubscriptionIdentifierSemanticException.java   |   5 +
 .../SubscriptionIncompatibleHandlerException.java  |   5 +
 .../SubscriptionParameterNotValidException.java    |   5 +
 .../SubscriptionRuntimeCriticalException.java      |   5 +
 .../exception/SubscriptionRuntimeException.java    |   5 +
 .../SubscriptionRuntimeNonCriticalException.java   |   5 +
 .../org/apache/iotdb/session/NodesSupplier.java    |   1 +
 .../java/org/apache/iotdb/session/Session.java     |   1 +
 .../apache/iotdb/session/SessionConnection.java    |   1 +
 .../org/apache/iotdb/session/pool/SessionPool.java |   1 +
 .../consumer/SubscriptionConsumer.java             |  43 +++----
 .../confignode/conf/ConfigNodeDescriptor.java      |   2 +
 .../manager/load/service/EventService.java         |   1 +
 .../metric/PipeConfigNodeRemainingTimeMetrics.java |   1 +
 .../metric/PipeConfigRegionConnectorMetrics.java   |   1 +
 .../pipe/metric/PipeTemporaryMetaMetrics.java      |   1 +
 .../iotdb/confignode/persistence/ClusterInfo.java  |   6 +
 .../confignode/persistence/ProcedureInfo.java      |   5 +
 .../iotdb/confignode/persistence/TTLInfo.java      |   6 +
 .../confignode/persistence/pipe/PipeInfo.java      |   1 +
 .../schema/CNPhysicalPlanGenerator.java            |   1 +
 .../impl/region/AddRegionPeerProcedure.java        |   6 +
 .../impl/region/RemoveRegionPeerProcedure.java     |   6 +
 .../impl/testonly/NeverFinishProcedure.java        |   6 +
 .../apache/iotdb/consensus/pipe/PipeConsensus.java |   5 +-
 .../consensus/pipe/PipeConsensusServerImpl.java    |   1 +
 .../apache/iotdb/consensus/ratis/utils/Utils.java  |   2 +-
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |  14 ++-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |   8 ++
 .../batch/PipeTabletEventTsFileBatch.java          |   1 +
 .../protocol/opcua/OpcUaServerBuilder.java         | 139 +++++++++++----------
 .../pipeconsensus/PipeConsensusAsyncConnector.java |   3 +-
 .../async/IoTDBDataRegionAsyncConnector.java       |   1 +
 .../PipeDataNodeRemainingEventAndTimeMetrics.java  |   1 +
 .../metric/PipeDataRegionConnectorMetrics.java     |   1 +
 .../metric/PipeDataRegionExtractorMetrics.java     |   1 +
 .../iotdb/db/pipe/metric/PipeProcessorMetrics.java |   1 +
 .../metric/PipeSchemaRegionConnectorMetrics.java   |   1 +
 .../metric/PipeSchemaRegionExtractorMetrics.java   |   1 +
 .../metric/PipeSchemaRegionListenerMetrics.java    |   1 +
 .../pipe/metric/PipeWALInsertNodeCacheMetrics.java |   1 +
 .../pipeconsensus/PipeConsensusReceiver.java       |  18 +--
 .../pipe/resource/wal/PipeWALResourceManager.java  |   1 +
 .../protocol/thrift/impl/ClientRPCServiceImpl.java |   1 +
 .../operator/process/FilterAndProjectOperator.java |   3 +-
 .../analyze/cache/schema/SchemaCacheEntry.java     |   1 +
 .../cache/schema/TimeSeriesSchemaCache.java        |   3 +-
 .../dualkeycache/impl/FIFOCacheEntryManager.java   |   2 +
 .../dualkeycache/impl/LRUCacheEntryManager.java    |   2 +
 .../impl/pbtree/mnode/info/CacheMNodeInfo.java     |   1 +
 .../mtree/impl/pbtree/schemafile/SchemaFile.java   |   2 +
 .../mtree/loader/MNodeFactoryLoader.java           |   4 +
 .../iotdb/db/storageengine/StorageEngine.java      |   5 +
 .../db/storageengine/dataregion/DataRegion.java    |   1 +
 .../CompactionFileCountExceededException.java      |   1 +
 .../CompactionLastTimeCheckFailedException.java    |   1 +
 .../CompactionMemoryNotEnoughException.java        |   1 +
 .../CompactionValidationFailedException.java       |   1 +
 .../execute/task/SettleCompactionTask.java         |  10 +-
 .../execute/utils/MultiTsFileDeviceIterator.java   |   3 +-
 .../compaction/io/CompactionTsFileReader.java      |   1 +
 .../repair/RepairTimePartitionScanTask.java        |   1 +
 .../repair/UnsortedFileRepairTaskScheduler.java    |   1 +
 .../schedule/CompactionScheduleTaskManager.java    |  12 +-
 .../schedule/CompactionScheduleTaskWorker.java     |   1 +
 .../compaction/schedule/TTLScheduleTask.java       |   1 +
 .../dataregion/compaction/tool/PrintUtil.java      |   2 +-
 .../compaction/tool/TimePartitionProcessTask.java  |   8 +-
 .../tool/TimePartitionProcessWorker.java           |   9 +-
 .../dataregion/modification/ModificationFile.java  |   2 +-
 .../io/LocalTextModificationAccessor.java          |   1 +
 .../storageengine/dataregion/wal/node/WALNode.java |   1 +
 .../file/UnsealedTsFileRecoverPerformer.java       |   4 +-
 .../rescon/disk/DirectoryChecker.java              |   2 +
 .../broker/SubscriptionPrefetchingQueue.java       |  40 +++---
 .../db/tools/schema/PBTreeFileSketchTool.java      |  11 +-
 .../schemaRegion/SchemaRegionAliasAndTagTest.java  |   1 +
 .../settle/SettleCompactionRecoverTest.java        |   4 +-
 .../dataregion/wal/io/WALFileTest.java             |  10 +-
 .../wal/utils/WALInsertNodeCacheTest.java          |   4 +-
 .../apache/iotdb/commons/conf/CommonConfig.java    |   2 +-
 .../commons/consensus/index/ProgressIndex.java     |   5 +
 .../PipeRuntimeConnectorCriticalException.java     |   5 +
 .../pipe/PipeRuntimeNonCriticalException.java      |   5 +
 .../PipeRuntimeOutOfMemoryCriticalException.java   |   5 +
 .../connector/limiter/PipeEndPointRateLimiter.java |   1 +
 .../connector/protocol/IoTDBAirGapConnector.java   |   1 +
 .../commons/pipe/progress/PipeEventCommitter.java  |   1 +
 .../task/subtask/PipeAbstractConnectorSubtask.java |   1 +
 .../commons/service/metric/GcTimeAlerter.java      |   2 +
 .../apache/iotdb/commons/udf/builtin/UDTFAbs.java  |   1 +
 .../org/apache/iotdb/library/dlearn/UDTFAR.java    |   1 +
 .../apache/iotdb/library/dmatch/UDTFPtnSym.java    |   1 +
 .../apache/iotdb/library/dprofile/UDTFSample.java  |   1 +
 102 files changed, 473 insertions(+), 273 deletions(-)

diff --git 
a/example/pipe-opc-ua-sink/src/main/java/org/apache/iotdb/opcua/ClientExampleRunner.java
 
b/example/pipe-opc-ua-sink/src/main/java/org/apache/iotdb/opcua/ClientExampleRunner.java
index 599afd23ec2..1fe49a75007 100644
--- 
a/example/pipe-opc-ua-sink/src/main/java/org/apache/iotdb/opcua/ClientExampleRunner.java
+++ 
b/example/pipe-opc-ua-sink/src/main/java/org/apache/iotdb/opcua/ClientExampleRunner.java
@@ -132,6 +132,7 @@ public class ClientExampleRunner {
         Thread.sleep(1000);
         System.exit(0);
       } catch (InterruptedException e) {
+        Thread.currentThread().interrupt();
         e.printStackTrace();
       }
     }
@@ -139,6 +140,7 @@ public class ClientExampleRunner {
     try {
       Thread.sleep(999_999_999);
     } catch (InterruptedException e) {
+      Thread.currentThread().interrupt();
       e.printStackTrace();
     }
   }
diff --git 
a/example/session/src/main/java/org/apache/iotdb/SubscriptionSessionExample.java
 
b/example/session/src/main/java/org/apache/iotdb/SubscriptionSessionExample.java
index 79380b4bc5b..1ec74a34a29 100644
--- 
a/example/session/src/main/java/org/apache/iotdb/SubscriptionSessionExample.java
+++ 
b/example/session/src/main/java/org/apache/iotdb/SubscriptionSessionExample.java
@@ -136,38 +136,38 @@ public class SubscriptionSessionExample {
     final Properties config = new Properties();
     config.put(ConsumerConstant.CONSUMER_ID_KEY, "c1");
     config.put(ConsumerConstant.CONSUMER_GROUP_ID_KEY, "cg1");
-    final SubscriptionPullConsumer consumer1 = new 
SubscriptionPullConsumer(config);
-    consumer1.open();
-    consumer1.subscribe(TOPIC_1);
-    while (true) {
-      final List<SubscriptionMessage> messages = 
consumer1.poll(POLL_TIMEOUT_MS);
-      if (messages.isEmpty()) {
-        retryCount++;
-        if (retryCount >= MAX_RETRY_TIMES) {
-          break;
+    try (SubscriptionPullConsumer consumer1 = new 
SubscriptionPullConsumer(config)) {
+      consumer1.open();
+      consumer1.subscribe(TOPIC_1);
+      while (true) {
+        final List<SubscriptionMessage> messages = 
consumer1.poll(POLL_TIMEOUT_MS);
+        if (messages.isEmpty()) {
+          retryCount++;
+          if (retryCount >= MAX_RETRY_TIMES) {
+            break;
+          }
         }
-      }
-      for (final SubscriptionMessage message : messages) {
-        for (final SubscriptionSessionDataSet dataSet : 
message.getSessionDataSetsHandler()) {
-          System.out.println(dataSet.getColumnNames());
-          System.out.println(dataSet.getColumnTypes());
-          while (dataSet.hasNext()) {
-            System.out.println(dataSet.next());
+        for (final SubscriptionMessage message : messages) {
+          for (final SubscriptionSessionDataSet dataSet : 
message.getSessionDataSetsHandler()) {
+            System.out.println(dataSet.getColumnNames());
+            System.out.println(dataSet.getColumnTypes());
+            while (dataSet.hasNext()) {
+              System.out.println(dataSet.next());
+            }
           }
         }
+        // Auto commit
       }
-      // Auto commit
-    }
 
-    // Show topics and subscriptions
-    try (final SubscriptionSession subscriptionSession = new 
SubscriptionSession(HOST, PORT)) {
-      subscriptionSession.open();
-      subscriptionSession.getTopics().forEach((System.out::println));
-      subscriptionSession.getSubscriptions().forEach((System.out::println));
-    }
+      // Show topics and subscriptions
+      try (final SubscriptionSession subscriptionSession = new 
SubscriptionSession(HOST, PORT)) {
+        subscriptionSession.open();
+        subscriptionSession.getTopics().forEach((System.out::println));
+        subscriptionSession.getSubscriptions().forEach((System.out::println));
+      }
 
-    consumer1.unsubscribe(TOPIC_1);
-    consumer1.close();
+      consumer1.unsubscribe(TOPIC_1);
+    }
   }
 
   /** multi pull consumer subscribe topic with tsfile format */
diff --git 
a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ExportData.java 
b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ExportData.java
index a8e8ebf1e45..bc09e2faa51 100644
--- a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ExportData.java
+++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ExportData.java
@@ -507,83 +507,83 @@ public class ExportData extends AbstractDataTool {
     while (hasNext) {
       int i = 0;
       final String finalFilePath = filePath + "_" + fileIndex + ".sql";
-      FileWriter writer = new FileWriter(finalFilePath);
-      if (writeNull) {
-        break;
-      }
-      while (i++ < linesPerFile) {
-        if (sessionDataSet.hasNext()) {
-          RowRecord rowRecord = sessionDataSet.next();
-          List<Field> fields = rowRecord.getFields();
-          List<String> headersTemp = new ArrayList<>(seriesList);
-          List<String> timeseries = new ArrayList<>();
-          if (headers.contains("Device")) {
-            deviceName = fields.get(0).toString();
-            if (deviceName.startsWith(SYSTEM_DATABASE + ".")) {
-              continue;
+      try (FileWriter writer = new FileWriter(finalFilePath)) {
+        if (writeNull) {
+          break;
+        }
+        while (i++ < linesPerFile) {
+          if (sessionDataSet.hasNext()) {
+            RowRecord rowRecord = sessionDataSet.next();
+            List<Field> fields = rowRecord.getFields();
+            List<String> headersTemp = new ArrayList<>(seriesList);
+            List<String> timeseries = new ArrayList<>();
+            if (headers.contains("Device")) {
+              deviceName = fields.get(0).toString();
+              if (deviceName.startsWith(SYSTEM_DATABASE + ".")) {
+                continue;
+              }
+              for (String header : headersTemp) {
+                timeseries.add(deviceName + "." + header);
+              }
+            } else {
+              if (headers.get(1).startsWith(SYSTEM_DATABASE + ".")) {
+                continue;
+              }
+              timeseries.addAll(headers);
+              timeseries.remove(0);
             }
-            for (String header : headersTemp) {
-              timeseries.add(deviceName + "." + header);
+            String sqlMiddle = null;
+            if (Boolean.TRUE.equals(aligned)) {
+              sqlMiddle = " ALIGNED VALUES (" + rowRecord.getTimestamp() + ",";
+            } else {
+              sqlMiddle = " VALUES (" + rowRecord.getTimestamp() + ",";
             }
-          } else {
-            if (headers.get(1).startsWith(SYSTEM_DATABASE + ".")) {
-              continue;
+            List<String> values = new ArrayList<>();
+            if (headers.contains("Device")) {
+              fields.remove(0);
             }
-            timeseries.addAll(headers);
-            timeseries.remove(0);
-          }
-          String sqlMiddle = null;
-          if (Boolean.TRUE.equals(aligned)) {
-            sqlMiddle = " ALIGNED VALUES (" + rowRecord.getTimestamp() + ",";
-          } else {
-            sqlMiddle = " VALUES (" + rowRecord.getTimestamp() + ",";
-          }
-          List<String> values = new ArrayList<>();
-          if (headers.contains("Device")) {
-            fields.remove(0);
-          }
-          for (int index = 0; index < fields.size(); index++) {
-            RowRecord next =
-                session
-                    .executeQueryStatement("SHOW TIMESERIES " + 
timeseries.get(index), timeout)
-                    .next();
-            if (ObjectUtils.isNotEmpty(next)) {
-              List<Field> timeseriesList = next.getFields();
-              String value = fields.get(index).toString();
-              if (value.equals("null")) {
+            for (int index = 0; index < fields.size(); index++) {
+              RowRecord next =
+                  session
+                      .executeQueryStatement("SHOW TIMESERIES " + 
timeseries.get(index), timeout)
+                      .next();
+              if (ObjectUtils.isNotEmpty(next)) {
+                List<Field> timeseriesList = next.getFields();
+                String value = fields.get(index).toString();
+                if (value.equals("null")) {
+                  headersTemp.remove(seriesList.get(index));
+                  continue;
+                }
+                if 
("TEXT".equalsIgnoreCase(timeseriesList.get(3).getStringValue())) {
+                  values.add("\"" + value + "\"");
+                } else {
+                  values.add(value);
+                }
+              } else {
                 headersTemp.remove(seriesList.get(index));
                 continue;
               }
-              if 
("TEXT".equalsIgnoreCase(timeseriesList.get(3).getStringValue())) {
-                values.add("\"" + value + "\"");
-              } else {
-                values.add(value);
-              }
-            } else {
-              headersTemp.remove(seriesList.get(index));
-              continue;
             }
-          }
-          if (CollectionUtils.isNotEmpty(headersTemp)) {
-            writer.write(
-                "INSERT INTO "
-                    + deviceName
-                    + "(TIMESTAMP,"
-                    + String.join(",", headersTemp)
-                    + ")"
-                    + sqlMiddle
-                    + String.join(",", values)
-                    + ");\n");
-          }
+            if (CollectionUtils.isNotEmpty(headersTemp)) {
+              writer.write(
+                  "INSERT INTO "
+                      + deviceName
+                      + "(TIMESTAMP,"
+                      + String.join(",", headersTemp)
+                      + ")"
+                      + sqlMiddle
+                      + String.join(",", values)
+                      + ");\n");
+            }
 
-        } else {
-          hasNext = false;
-          break;
+          } else {
+            hasNext = false;
+            break;
+          }
         }
+        fileIndex++;
+        writer.flush();
       }
-      fileIndex++;
-      writer.flush();
-      writer.close();
     }
   }
 }
diff --git 
a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportData.java 
b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportData.java
index ec6ef94d47c..a16cce67a2e 100644
--- a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportData.java
+++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportData.java
@@ -464,6 +464,7 @@ public class ImportData extends AbstractDataTool {
     }
   }
 
+  @SuppressWarnings("java:S2259")
   private static void importFromSqlFile(File file) {
     ArrayList<List<Object>> failedRecords = new ArrayList<>();
     String failedFilePath = null;
@@ -500,7 +501,6 @@ public class ImportData extends AbstractDataTool {
             writer.flush();
             writer.close();
           } catch (IOException e) {
-            ;
           }
         }
       }
diff --git 
a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportTsFile.java 
b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportTsFile.java
index e417cf2d065..576d2927beb 100644
--- a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportTsFile.java
+++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportTsFile.java
@@ -331,6 +331,7 @@ public class ImportTsFile extends AbstractTsFileTool {
       return CODE_OK;
     } catch (InterruptedException e) {
       ioTPrinter.println(String.format("Import tsfile fail: %s", 
e.getMessage()));
+      Thread.currentThread().interrupt();
       return CODE_ERROR;
     } finally {
       if (sessionPool != null) {
@@ -381,6 +382,7 @@ public class ImportTsFile extends AbstractTsFileTool {
           try {
             thread.join();
           } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
             ioTPrinter.println("importTsFile thread join interrupted: " + 
e.getMessage());
           }
         });
@@ -434,6 +436,9 @@ public class ImportTsFile extends AbstractTsFileTool {
           }
         }
       }
+    } catch (InterruptedException e) {
+      ioTPrinter.println("Unexpected error occurred: " + e.getMessage());
+      Thread.currentThread().interrupt();
     } catch (Exception e) {
       ioTPrinter.println("Unexpected error occurred: " + e.getMessage());
     }
diff --git 
a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/IoTDBDataBackTool.java 
b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/IoTDBDataBackTool.java
index b84a2e30a4c..7cc3556562b 100644
--- 
a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/IoTDBDataBackTool.java
+++ 
b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/IoTDBDataBackTool.java
@@ -171,7 +171,7 @@ public class IoTDBDataBackTool {
     return isVaild;
   }
 
-  public static void main(String[] args) {
+  public static void main(String[] args) throws IOException {
     System.setProperty("IOTDB_HOME", System.getenv("IOTDB_HOME"));
     argsParse(args);
     File sourceDir = new File(sourcePath);
@@ -1039,14 +1039,15 @@ public class IoTDBDataBackTool {
     try {
       newValue = formatPathForOS(newValue);
       FileInputStream fileInputStream = new FileInputStream(filePath);
-      BufferedReader reader = new BufferedReader(new 
InputStreamReader(fileInputStream));
+      List<String> lines;
+      try (BufferedReader reader = new BufferedReader(new 
InputStreamReader(fileInputStream))) {
 
-      List<String> lines = new ArrayList<>();
-      String line;
-      while ((line = reader.readLine()) != null) {
-        lines.add(line);
+        lines = new ArrayList<>();
+        String line;
+        while ((line = reader.readLine()) != null) {
+          lines.add(line);
+        }
       }
-      reader.close();
       boolean keyFound = false;
 
       for (int i = 0; i < lines.size(); i++) {
@@ -1118,11 +1119,11 @@ public class IoTDBDataBackTool {
     return 0;
   }
 
-  public static void delFile(String filename) {
+  public static void delFile(String filename) throws IOException {
     filename = sourcePath + File.separatorChar + "logs" + File.separatorChar + 
filename;
     File file = new File(filename);
     if (file.exists()) {
-      file.delete();
+      Files.delete(file.toPath());
     }
   }
 
diff --git 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConfig.java
 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConfig.java
index 178c5a652f5..21a4b4873c8 100644
--- 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConfig.java
+++ 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConfig.java
@@ -56,14 +56,14 @@ public class TopicConfig extends PipeParameters {
   private static final Map<String, String> LIVE_MODE_CONFIG =
       Collections.singletonMap("mode", MODE_LIVE_VALUE);
 
-  private static final Set<String> LOOSE_RANGE_KEY_SET =
-      Collections.unmodifiableSet(
-          new HashSet<String>() {
-            {
-              add("history.loose-range");
-              add("realtime.loose-range");
-            }
-          });
+  private static final Set<String> LOOSE_RANGE_KEY_SET;
+
+  static {
+    Set<String> set = new HashSet<>(2);
+    set.add("history.loose-range");
+    set.add("realtime.loose-range");
+    LOOSE_RANGE_KEY_SET = Collections.unmodifiableSet(set);
+  }
 
   /////////////////////////////// de/ser ///////////////////////////////
 
diff --git 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionConnectionException.java
 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionConnectionException.java
index 7bc4f75d59e..1e108ce6430 100644
--- 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionConnectionException.java
+++ 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionConnectionException.java
@@ -37,4 +37,9 @@ public class SubscriptionConnectionException extends 
SubscriptionRuntimeCritical
         && Objects.equals(getMessage(), ((SubscriptionConnectionException) 
obj).getMessage())
         && Objects.equals(getTimeStamp(), ((SubscriptionConnectionException) 
obj).getTimeStamp());
   }
+
+  @Override
+  public int hashCode() {
+    return super.hashCode();
+  }
 }
diff --git 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIdentifierSemanticException.java
 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIdentifierSemanticException.java
index 6eb9ba6d734..dd10d428023 100644
--- 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIdentifierSemanticException.java
+++ 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIdentifierSemanticException.java
@@ -39,4 +39,9 @@ public class SubscriptionIdentifierSemanticException extends 
SubscriptionExcepti
         && Objects.equals(
             getTimeStamp(), ((SubscriptionIdentifierSemanticException) 
obj).getTimeStamp());
   }
+
+  @Override
+  public int hashCode() {
+    return super.hashCode();
+  }
 }
diff --git 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIncompatibleHandlerException.java
 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIncompatibleHandlerException.java
index 710b8db8d70..eba4a7a9025 100644
--- 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIncompatibleHandlerException.java
+++ 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIncompatibleHandlerException.java
@@ -39,4 +39,9 @@ public class SubscriptionIncompatibleHandlerException extends 
SubscriptionExcept
         && Objects.equals(
             getTimeStamp(), ((SubscriptionIncompatibleHandlerException) 
obj).getTimeStamp());
   }
+
+  @Override
+  public int hashCode() {
+    return super.hashCode();
+  }
 }
diff --git 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionParameterNotValidException.java
 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionParameterNotValidException.java
index 8062c582936..d6cbd5d184c 100644
--- 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionParameterNotValidException.java
+++ 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionParameterNotValidException.java
@@ -38,4 +38,9 @@ public class SubscriptionParameterNotValidException extends 
SubscriptionExceptio
         && Objects.equals(
             getTimeStamp(), ((SubscriptionParameterNotValidException) 
obj).getTimeStamp());
   }
+
+  @Override
+  public int hashCode() {
+    return super.hashCode();
+  }
 }
diff --git 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeCriticalException.java
 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeCriticalException.java
index 1267ea9085c..72124ba3109 100644
--- 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeCriticalException.java
+++ 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeCriticalException.java
@@ -38,4 +38,9 @@ public class SubscriptionRuntimeCriticalException extends 
SubscriptionException
         && Objects.equals(
             getTimeStamp(), ((SubscriptionRuntimeCriticalException) 
obj).getTimeStamp());
   }
+
+  @Override
+  public int hashCode() {
+    return super.hashCode();
+  }
 }
diff --git 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeException.java
 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeException.java
index aa7abb4eb02..cf59ee1a949 100644
--- 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeException.java
+++ 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeException.java
@@ -37,4 +37,9 @@ public class SubscriptionRuntimeException extends 
SubscriptionException {
         && Objects.equals(getMessage(), ((SubscriptionRuntimeException) 
obj).getMessage())
         && Objects.equals(getTimeStamp(), ((SubscriptionRuntimeException) 
obj).getTimeStamp());
   }
+
+  @Override
+  public int hashCode() {
+    return super.hashCode();
+  }
 }
diff --git 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeNonCriticalException.java
 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeNonCriticalException.java
index 6dab191551d..c367d8a8956 100644
--- 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeNonCriticalException.java
+++ 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeNonCriticalException.java
@@ -39,4 +39,9 @@ public class SubscriptionRuntimeNonCriticalException extends 
SubscriptionRuntime
         && Objects.equals(
             getTimeStamp(), ((SubscriptionRuntimeNonCriticalException) 
obj).getTimeStamp());
   }
+
+  @Override
+  public int hashCode() {
+    return super.hashCode();
+  }
 }
diff --git 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/NodesSupplier.java
 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/NodesSupplier.java
index 37532023ce6..9284171eade 100644
--- 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/NodesSupplier.java
+++ 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/NodesSupplier.java
@@ -58,6 +58,7 @@ public class NodesSupplier implements INodeSupplier, Runnable 
{
 
   // availableNodes won't be updated frequently, so we use 
CopyOnWriteArrayList which is thread-safe
   // and is optimized for scenarios of reading more and writing less
+  @SuppressWarnings("java:S3077")
   private volatile List<TEndPoint> availableNodes = new 
CopyOnWriteArrayList<>();
 
   private final boolean useSSL;
diff --git 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
index cf4095a9036..caa02baee3f 100644
--- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -167,6 +167,7 @@ public class Session implements ISession {
   protected volatile Map<TEndPoint, SessionConnection> 
endPointToSessionConnection;
 
   // used to update datanodeList periodically
+  @SuppressWarnings("squid:S3077") // Non-primitive fields should not be 
"volatile"
   protected volatile ScheduledExecutorService executorService;
 
   protected INodeSupplier availableNodes;
diff --git 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
index d2d5e7ebc2e..7edaee23524 100644
--- 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
+++ 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
@@ -84,6 +84,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Supplier;
 
+@SuppressWarnings("java:S2142")
 public class SessionConnection {
 
   private static final Logger logger = 
LoggerFactory.getLogger(SessionConnection.class);
diff --git 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
index ab94b502c81..5ef9f7616f6 100644
--- 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
+++ 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java
@@ -154,6 +154,7 @@ public class SessionPool implements ISessionPool {
   private final String formattedNodeUrls;
 
   // used to update datanodeList periodically
+  @SuppressWarnings("java:S3077")
   private volatile ScheduledExecutorService executorService;
 
   private INodeSupplier availableNodes;
diff --git 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionConsumer.java
 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionConsumer.java
index 9a6b0fccf7a..2c09fabb0c2 100644
--- 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionConsumer.java
+++ 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionConsumer.java
@@ -102,6 +102,7 @@ abstract class SubscriptionConsumer implements 
AutoCloseable {
   private final String fileSaveDir;
   private final boolean fileSaveFsync;
 
+  @SuppressWarnings("java:S3077")
   protected volatile Map<String, TopicConfig> subscribedTopics = new 
HashMap<>();
 
   public boolean allSnapshotTopicMessagesHaveBeenConsumed() {
@@ -1067,31 +1068,27 @@ abstract class SubscriptionConsumer implements 
AutoCloseable {
   /////////////////////////////// stringify ///////////////////////////////
 
   protected Map<String, String> coreReportMessage() {
-    return new HashMap<String, String>() {
-      {
-        put("consumerId", consumerId);
-        put("consumerGroupId", consumerGroupId);
-        put("isClosed", isClosed.toString());
-        put("fileSaveDir", fileSaveDir);
-        put("subscribedTopicNames", subscribedTopics.keySet().toString());
-      }
-    };
+    Map<String, String> result = new HashMap<>(5);
+    result.put("consumerId", consumerId);
+    result.put("consumerGroupId", consumerGroupId);
+    result.put("isClosed", isClosed.toString());
+    result.put("fileSaveDir", fileSaveDir);
+    result.put("subscribedTopicNames", subscribedTopics.keySet().toString());
+    return result;
   }
 
   protected Map<String, String> allReportMessage() {
-    return new HashMap<String, String>() {
-      {
-        put("consumerId", consumerId);
-        put("consumerGroupId", consumerGroupId);
-        put("heartbeatIntervalMs", String.valueOf(heartbeatIntervalMs));
-        put("endpointsSyncIntervalMs", 
String.valueOf(endpointsSyncIntervalMs));
-        put("providers", providers.toString());
-        put("isClosed", isClosed.toString());
-        put("isReleased", isReleased.toString());
-        put("fileSaveDir", fileSaveDir);
-        put("fileSaveFsync", String.valueOf(fileSaveFsync));
-        put("subscribedTopics", subscribedTopics.toString());
-      }
-    };
+    Map<String, String> result = new HashMap<>(10);
+    result.put("consumerId", consumerId);
+    result.put("consumerGroupId", consumerGroupId);
+    result.put("heartbeatIntervalMs", String.valueOf(heartbeatIntervalMs));
+    result.put("endpointsSyncIntervalMs", 
String.valueOf(endpointsSyncIntervalMs));
+    result.put("providers", providers.toString());
+    result.put("isClosed", isClosed.toString());
+    result.put("isReleased", isReleased.toString());
+    result.put("fileSaveDir", fileSaveDir);
+    result.put("fileSaveFsync", String.valueOf(fileSaveFsync));
+    result.put("subscribedTopics", subscribedTopics.toString());
+    return result;
   }
 }
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
index 0d3bd36e895..77190535876 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
@@ -63,6 +63,8 @@ public class ConfigNodeDescriptor {
     try {
       ConfigurationFileUtils.checkAndMayUpdate(
           systemConfigUrl, configNodeUrl, dataNodeUrl, commonConfigUrl);
+    } catch (InterruptedException e) {
+      Thread.currentThread().interrupt();
     } catch (Exception e) {
       LOGGER.error("Failed to update config file", e);
     }
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/EventService.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/EventService.java
index 0d885f90524..5f6035f0bca 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/EventService.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/EventService.java
@@ -195,6 +195,7 @@ public class EventService {
     }
   }
 
+  @SuppressWarnings("java:S2259")
   private void recordRegionGroupStatistics(
       Map<TConsensusGroupId, Pair<RegionGroupStatistics, 
RegionGroupStatistics>>
           differentRegionGroupStatisticsMap) {
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/metric/PipeConfigNodeRemainingTimeMetrics.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/metric/PipeConfigNodeRemainingTimeMetrics.java
index bf974744b21..e3dbbed5d6c 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/metric/PipeConfigNodeRemainingTimeMetrics.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/metric/PipeConfigNodeRemainingTimeMetrics.java
@@ -41,6 +41,7 @@ public class PipeConfigNodeRemainingTimeMetrics implements 
IMetricSet {
   private static final Logger LOGGER =
       LoggerFactory.getLogger(PipeConfigNodeRemainingTimeMetrics.class);
 
+  @SuppressWarnings("java:S3077")
   private volatile AbstractMetricService metricService;
 
   private final Map<String, PipeConfigNodeRemainingTimeOperator> 
remainingTimeOperatorMap =
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/metric/PipeConfigRegionConnectorMetrics.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/metric/PipeConfigRegionConnectorMetrics.java
index 0900d9d4628..8fcb6fd9029 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/metric/PipeConfigRegionConnectorMetrics.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/metric/PipeConfigRegionConnectorMetrics.java
@@ -41,6 +41,7 @@ public class PipeConfigRegionConnectorMetrics implements 
IMetricSet {
   private static final Logger LOGGER =
       LoggerFactory.getLogger(PipeConfigRegionConnectorMetrics.class);
 
+  @SuppressWarnings("java:S3077")
   private volatile AbstractMetricService metricService;
 
   private final ConcurrentMap<String, PipeConfigNodeSubtask> subtaskMap = new 
ConcurrentHashMap<>();
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/metric/PipeTemporaryMetaMetrics.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/metric/PipeTemporaryMetaMetrics.java
index 676b4cd154e..4732ec23658 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/metric/PipeTemporaryMetaMetrics.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/metric/PipeTemporaryMetaMetrics.java
@@ -46,6 +46,7 @@ import java.util.concurrent.ConcurrentHashMap;
 public class PipeTemporaryMetaMetrics implements IMetricSet {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(PipeTemporaryMetaMetrics.class);
 
+  @SuppressWarnings("java:S3077")
   private volatile AbstractMetricService metricService;
 
   private final Map<String, PipeTemporaryMeta> pipeTemporaryMetaMap = new 
ConcurrentHashMap<>();
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ClusterInfo.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ClusterInfo.java
index aed3ee32603..b40bc75728d 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ClusterInfo.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ClusterInfo.java
@@ -34,6 +34,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.util.Objects;
 import java.util.UUID;
 
 public class ClusterInfo implements SnapshotProcessor {
@@ -106,4 +107,9 @@ public class ClusterInfo implements SnapshotProcessor {
     ClusterInfo clusterInfo = (ClusterInfo) o;
     return clusterId.equals(clusterInfo.getClusterId());
   }
+
+  @Override
+  public int hashCode() {
+    return Objects.hashCode(clusterId);
+  }
 }
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ProcedureInfo.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ProcedureInfo.java
index 0f6b55f7499..b2abf1f95e8 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ProcedureInfo.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ProcedureInfo.java
@@ -279,4 +279,9 @@ public class ProcedureInfo implements SnapshotProcessor {
     return lastProcId.get() == procedureInfo.lastProcId.get()
         && procedureMap.equals(procedureInfo.procedureMap);
   }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(lastProcId, procedureMap);
+  }
 }
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/TTLInfo.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/TTLInfo.java
index 90eb7bacd80..0848fcc4fbf 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/TTLInfo.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/TTLInfo.java
@@ -46,6 +46,7 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
@@ -212,6 +213,11 @@ public class TTLInfo implements SnapshotProcessor {
             .equals(other.showTTL(new ShowTTLPlan()).getPathTTLMap());
   }
 
+  @Override
+  public int hashCode() {
+    return Objects.hash(getTTLCount(), showTTL(new 
ShowTTLPlan()).getPathTTLMap());
+  }
+
   @TestOnly
   public void clear() {
     ttlCache.clear();
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/pipe/PipeInfo.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/pipe/PipeInfo.java
index ea1664c27a0..7c1823a7d0c 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/pipe/PipeInfo.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/pipe/PipeInfo.java
@@ -70,6 +70,7 @@ public class PipeInfo implements SnapshotProcessor {
 
   /////////////////////////////////  Non-query  
/////////////////////////////////
 
+  @SuppressWarnings("java:S2201")
   public TSStatus createPipe(final CreatePipePlanV2 plan) {
     try {
       final Optional<PipeMeta> pipeMetaBeforeCreation =
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/CNPhysicalPlanGenerator.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/CNPhysicalPlanGenerator.java
index f8895158afc..3469a3a5806 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/CNPhysicalPlanGenerator.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/CNPhysicalPlanGenerator.java
@@ -114,6 +114,7 @@ public class CNPhysicalPlanGenerator
   }
 
   @Override
+  @SuppressWarnings("java:S4348")
   public Iterator<ConfigPhysicalPlan> iterator() {
     return this;
   }
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/region/AddRegionPeerProcedure.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/region/AddRegionPeerProcedure.java
index 638009104f6..d06f40d3331 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/region/AddRegionPeerProcedure.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/region/AddRegionPeerProcedure.java
@@ -46,6 +46,7 @@ import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 import static org.apache.iotdb.commons.utils.KillPoint.KillPoint.setKillPoint;
@@ -293,4 +294,9 @@ public class AddRegionPeerProcedure
         && this.destDataNode.equals(procedure.destDataNode)
         && this.coordinator.equals(procedure.coordinator);
   }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(consensusGroupId, destDataNode, coordinator);
+  }
 }
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/region/RemoveRegionPeerProcedure.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/region/RemoveRegionPeerProcedure.java
index ed4de51ecf8..166714e90fc 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/region/RemoveRegionPeerProcedure.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/region/RemoveRegionPeerProcedure.java
@@ -45,6 +45,7 @@ import org.slf4j.LoggerFactory;
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.util.Objects;
 
 import static org.apache.iotdb.commons.utils.KillPoint.KillPoint.setKillPoint;
 import static 
org.apache.iotdb.confignode.procedure.state.RemoveRegionPeerState.DELETE_OLD_REGION_PEER;
@@ -230,4 +231,9 @@ public class RemoveRegionPeerProcedure
         && this.targetDataNode.equals(procedure.targetDataNode)
         && this.coordinator.equals(procedure.coordinator);
   }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(consensusGroupId, targetDataNode, coordinator);
+  }
 }
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/testonly/NeverFinishProcedure.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/testonly/NeverFinishProcedure.java
index df6c1220957..7b247bc6588 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/testonly/NeverFinishProcedure.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/testonly/NeverFinishProcedure.java
@@ -29,6 +29,7 @@ import 
org.apache.iotdb.confignode.procedure.store.ProcedureType;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
+import java.util.Objects;
 
 /** This procedure will never finish. */
 @TestOnly
@@ -82,4 +83,9 @@ public class NeverFinishProcedure extends 
StateMachineProcedure<ConfigNodeProced
     }
     return getProcId() == ((NeverFinishProcedure) o).getProcId();
   }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(getProcId());
+  }
 }
diff --git 
a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/PipeConsensus.java
 
b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/PipeConsensus.java
index 8864bb1f450..a6d87669269 100644
--- 
a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/PipeConsensus.java
+++ 
b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/PipeConsensus.java
@@ -417,8 +417,9 @@ public class PipeConsensus implements IConsensus {
 
   @Override
   public void triggerSnapshot(ConsensusGroupId groupId, boolean force) throws 
ConsensusException {
-    Optional.ofNullable(stateMachineMap.get(groupId))
-        .orElseThrow(() -> new ConsensusGroupNotExistException(groupId));
+    if (!stateMachineMap.containsKey(groupId)) {
+      throw new ConsensusGroupNotExistException(groupId);
+    }
     // Do nothing here because we do not need to transfer snapshot when there 
are new peers
   }
 
diff --git 
a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/PipeConsensusServerImpl.java
 
b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/PipeConsensusServerImpl.java
index 3865349db25..e8a30fba388 100644
--- 
a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/PipeConsensusServerImpl.java
+++ 
b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/PipeConsensusServerImpl.java
@@ -138,6 +138,7 @@ public class PipeConsensusServerImpl {
     }
   }
 
+  @SuppressWarnings("java:S2276")
   public synchronized void start(boolean startConsensusPipes) throws 
IOException {
     stateMachine.start();
     MetricService.getInstance().addMetricSet(this.pipeConsensusServerMetrics);
diff --git 
a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/ratis/utils/Utils.java
 
b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/ratis/utils/Utils.java
index 7c84ed9a9e5..9f25e837924 100644
--- 
a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/ratis/utils/Utils.java
+++ 
b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/ratis/utils/Utils.java
@@ -303,7 +303,7 @@ public class Utils {
         properties, config.getLog().getSegmentCacheSizeMax());
     RaftServerConfigKeys.Log.setPreallocatedSize(properties, 
config.getLog().getPreallocatedSize());
     final SizeInBytes writeBufferSize =
-        
SizeInBytes.valueOf(config.getLeaderLogAppender().getBufferByteLimit().getSizeInt()
 + 8);
+        
SizeInBytes.valueOf(config.getLeaderLogAppender().getBufferByteLimit().getSizeInt()
 + 8L);
     RaftServerConfigKeys.Log.setWriteBufferSize(properties, writeBufferSize);
     RaftServerConfigKeys.Log.setForceSyncNum(properties, 
config.getLog().getForceSyncNum());
     RaftServerConfigKeys.Log.setUnsafeFlushEnabled(
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index 082d0364f28..80bffe7074b 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -1331,12 +1331,17 @@ public class IoTDBConfig {
     formulateLoadTsFileDirs(tierDataDirs);
   }
 
-  void reloadDataDirs(String[][] tierDataDirs) throws 
LoadConfigurationException {
+  void reloadDataDirs(String[][] newTierDataDirs) throws 
LoadConfigurationException {
     // format data directories
-    formulateDataDirs(tierDataDirs);
+    formulateDataDirs(newTierDataDirs);
+    if (newTierDataDirs.length < this.tierDataDirs.length) {
+      String msg = "some data dirs are removed from data_dirs parameter, 
please add them back.";
+      logger.error(msg);
+      throw new LoadConfigurationException(msg);
+    }
     // make sure old data directories not removed
     for (int i = 0; i < this.tierDataDirs.length; ++i) {
-      List<String> newDirs = Arrays.asList(tierDataDirs[i]);
+      List<String> newDirs = Arrays.asList(newTierDataDirs[i]);
       for (String oldDir : this.tierDataDirs[i]) {
         if (newDirs.stream()
             .noneMatch(
@@ -1350,7 +1355,7 @@ public class IoTDBConfig {
         }
       }
     }
-    this.tierDataDirs = tierDataDirs;
+    this.tierDataDirs = newTierDataDirs;
     reloadSystemMetrics();
   }
 
@@ -1430,6 +1435,7 @@ public class IoTDBConfig {
     return tierDataDirs;
   }
 
+  @SuppressWarnings("javabugs:S6466")
   public void setTierDataDirs(String[][] tierDataDirs) {
     formulateDataDirs(tierDataDirs);
     this.tierDataDirs = tierDataDirs;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index b131acede4f..564c146bc94 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -111,6 +111,9 @@ public class IoTDBDescriptor {
       ConfigurationFileUtils.checkAndMayUpdate(
           systemConfigUrl, configNodeUrl, dataNodeUrl, commonConfigUrl);
     } catch (Exception e) {
+      if (e instanceof InterruptedException) {
+        Thread.currentThread().interrupt();
+      }
       LOGGER.error("Failed to update config file", e);
     }
   }
@@ -1860,6 +1863,9 @@ public class IoTDBDescriptor {
       // update retry config
       commonDescriptor.loadRetryProperties(properties);
     } catch (Exception e) {
+      if (e instanceof InterruptedException) {
+        Thread.currentThread().interrupt();
+      }
       throw new QueryProcessException(String.format("Fail to reload 
configuration because %s", e));
     }
   }
@@ -2015,6 +2021,7 @@ public class IoTDBDescriptor {
     }
   }
 
+  @SuppressWarnings("java:S3518")
   private void initStorageEngineAllocate(Properties properties) {
     long storageMemoryTotal = conf.getAllocateMemoryForStorageEngine();
     String valueOfStorageEngineMemoryProportion =
@@ -2069,6 +2076,7 @@ public class IoTDBDescriptor {
     }
   }
 
+  @SuppressWarnings("squid:S3518")
   private void initSchemaMemoryAllocate(Properties properties) {
     long schemaMemoryTotal = conf.getAllocateMemoryForSchema();
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/batch/PipeTabletEventTsFileBatch.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/batch/PipeTabletEventTsFileBatch.java
index 57a73935304..663cdadaeba 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/batch/PipeTabletEventTsFileBatch.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/batch/PipeTabletEventTsFileBatch.java
@@ -77,6 +77,7 @@ public class PipeTabletEventTsFileBatch extends 
PipeTabletEventBatch {
   private final List<Tablet> tabletList = new ArrayList<>();
   private final List<Boolean> isTabletAlignedList = new ArrayList<>();
 
+  @SuppressWarnings("java:S3077")
   private volatile TsFileWriter fileWriter;
 
   public PipeTabletEventTsFileBatch(final int maxDelayInMs, final long 
requestMaxBatchSizeInBytes) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/opcua/OpcUaServerBuilder.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/opcua/OpcUaServerBuilder.java
index ceb39d3eac7..85982318404 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/opcua/OpcUaServerBuilder.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/opcua/OpcUaServerBuilder.java
@@ -132,74 +132,77 @@ public class OpcUaServerBuilder {
     final DefaultCertificateManager certificateManager =
         new DefaultCertificateManager(loader.getServerKeyPair(), 
loader.getServerCertificate());
 
-    final DefaultTrustListManager trustListManager = new 
DefaultTrustListManager(pkiDir);
-    LOGGER.info(
-        "Certificate directory is: {}, Please move certificates from the 
reject dir to the trusted directory to allow encrypted access",
-        pkiDir.getAbsolutePath());
-
-    final KeyPair httpsKeyPair = 
SelfSignedCertificateGenerator.generateRsaKeyPair(2048);
-
-    final SelfSignedHttpsCertificateBuilder httpsCertificateBuilder =
-        new SelfSignedHttpsCertificateBuilder(httpsKeyPair);
-    httpsCertificateBuilder.setCommonName(HostnameUtil.getHostname());
-    
HostnameUtil.getHostnames(WILD_CARD_ADDRESS).forEach(httpsCertificateBuilder::addDnsName);
-    final X509Certificate httpsCertificate = httpsCertificateBuilder.build();
-
-    final DefaultServerCertificateValidator certificateValidator =
-        new DefaultServerCertificateValidator(trustListManager);
-
-    final UsernameIdentityValidator identityValidator =
-        new UsernameIdentityValidator(
-            true,
-            authChallenge -> {
-              String inputUsername = authChallenge.getUsername();
-              String inputPassword = authChallenge.getPassword();
-
-              return inputUsername.equals(user) && 
inputPassword.equals(password);
-            });
-
-    final X509IdentityValidator x509IdentityValidator = new 
X509IdentityValidator(c -> true);
-
-    final X509Certificate certificate =
-        certificateManager.getCertificates().stream()
-            .findFirst()
-            .orElseThrow(
-                () ->
-                    new UaRuntimeException(
-                        StatusCodes.Bad_ConfigurationError, "No certificate 
found"));
-
-    final String applicationUri =
-        CertificateUtil.getSanUri(certificate)
-            .orElseThrow(
-                () ->
-                    new UaRuntimeException(
-                        StatusCodes.Bad_ConfigurationError,
-                        "Certificate is missing the application URI"));
-
-    final Set<EndpointConfiguration> endpointConfigurations =
-        createEndpointConfigurations(certificate, tcpBindPort, httpsBindPort);
-
-    final OpcUaServerConfig serverConfig =
-        OpcUaServerConfig.builder()
-            .setApplicationUri(applicationUri)
-            .setApplicationName(LocalizedText.english("Apache IoTDB OPC UA 
server"))
-            .setEndpoints(endpointConfigurations)
-            .setBuildInfo(
-                new BuildInfo(
-                    "urn:apache:iotdb:opc-ua-server",
-                    "apache",
-                    "Apache IoTDB OPC UA server",
-                    OpcUaServer.SDK_VERSION,
-                    "",
-                    DateTime.now()))
-            .setCertificateManager(certificateManager)
-            .setTrustListManager(trustListManager)
-            .setCertificateValidator(certificateValidator)
-            .setHttpsKeyPair(httpsKeyPair)
-            .setHttpsCertificateChain(new X509Certificate[] {httpsCertificate})
-            .setIdentityValidator(new CompositeValidator(identityValidator, 
x509IdentityValidator))
-            .setProductUri("urn:apache:iotdb:opc-ua-server")
-            .build();
+    final OpcUaServerConfig serverConfig;
+    try (DefaultTrustListManager trustListManager = new 
DefaultTrustListManager(pkiDir)) {
+      LOGGER.info(
+          "Certificate directory is: {}, Please move certificates from the 
reject dir to the trusted directory to allow encrypted access",
+          pkiDir.getAbsolutePath());
+
+      final KeyPair httpsKeyPair = 
SelfSignedCertificateGenerator.generateRsaKeyPair(2048);
+
+      final SelfSignedHttpsCertificateBuilder httpsCertificateBuilder =
+          new SelfSignedHttpsCertificateBuilder(httpsKeyPair);
+      httpsCertificateBuilder.setCommonName(HostnameUtil.getHostname());
+      
HostnameUtil.getHostnames(WILD_CARD_ADDRESS).forEach(httpsCertificateBuilder::addDnsName);
+      final X509Certificate httpsCertificate = httpsCertificateBuilder.build();
+
+      final DefaultServerCertificateValidator certificateValidator =
+          new DefaultServerCertificateValidator(trustListManager);
+
+      final UsernameIdentityValidator identityValidator =
+          new UsernameIdentityValidator(
+              true,
+              authChallenge -> {
+                String inputUsername = authChallenge.getUsername();
+                String inputPassword = authChallenge.getPassword();
+
+                return inputUsername.equals(user) && 
inputPassword.equals(password);
+              });
+
+      final X509IdentityValidator x509IdentityValidator = new 
X509IdentityValidator(c -> true);
+
+      final X509Certificate certificate =
+          certificateManager.getCertificates().stream()
+              .findFirst()
+              .orElseThrow(
+                  () ->
+                      new UaRuntimeException(
+                          StatusCodes.Bad_ConfigurationError, "No certificate 
found"));
+
+      final String applicationUri =
+          CertificateUtil.getSanUri(certificate)
+              .orElseThrow(
+                  () ->
+                      new UaRuntimeException(
+                          StatusCodes.Bad_ConfigurationError,
+                          "Certificate is missing the application URI"));
+
+      final Set<EndpointConfiguration> endpointConfigurations =
+          createEndpointConfigurations(certificate, tcpBindPort, 
httpsBindPort);
+
+      serverConfig =
+          OpcUaServerConfig.builder()
+              .setApplicationUri(applicationUri)
+              .setApplicationName(LocalizedText.english("Apache IoTDB OPC UA 
server"))
+              .setEndpoints(endpointConfigurations)
+              .setBuildInfo(
+                  new BuildInfo(
+                      "urn:apache:iotdb:opc-ua-server",
+                      "apache",
+                      "Apache IoTDB OPC UA server",
+                      OpcUaServer.SDK_VERSION,
+                      "",
+                      DateTime.now()))
+              .setCertificateManager(certificateManager)
+              .setTrustListManager(trustListManager)
+              .setCertificateValidator(certificateValidator)
+              .setHttpsKeyPair(httpsKeyPair)
+              .setHttpsCertificateChain(new X509Certificate[] 
{httpsCertificate})
+              .setIdentityValidator(
+                  new CompositeValidator(identityValidator, 
x509IdentityValidator))
+              .setProductUri("urn:apache:iotdb:opc-ua-server")
+              .build();
+    }
 
     // Setup server to enable event posting
     final OpcUaServer server = new OpcUaServer(serverConfig);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/pipeconsensus/PipeConsensusAsyncConnector.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/pipeconsensus/PipeConsensusAsyncConnector.java
index a61156a98ed..7520f217df3 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/pipeconsensus/PipeConsensusAsyncConnector.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/pipeconsensus/PipeConsensusAsyncConnector.java
@@ -474,6 +474,7 @@ public class PipeConsensusAsyncConnector extends 
IoTDBConnector implements Conse
    *
    * @param event event to retry
    */
+  @SuppressWarnings("java:S899")
   public void addFailureEventToRetryQueue(final Event event) {
     if (isClosed.get()) {
       if (event instanceof EnrichedEvent) {
@@ -482,7 +483,7 @@ public class PipeConsensusAsyncConnector extends 
IoTDBConnector implements Conse
       return;
     }
 
-    boolean ignore = retryEventQueue.offer(event);
+    retryEventQueue.offer(event);
     if (LOGGER.isDebugEnabled()) {
       LOGGER.debug(
           "PipeConsensus-ConsensusGroup-{}: Event {} transfer failed, will be 
added to retry queue.",
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/async/IoTDBDataRegionAsyncConnector.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/async/IoTDBDataRegionAsyncConnector.java
index b902a8b2f46..255e5adec76 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/async/IoTDBDataRegionAsyncConnector.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/thrift/async/IoTDBDataRegionAsyncConnector.java
@@ -469,6 +469,7 @@ public class IoTDBDataRegionAsyncConnector extends 
IoTDBConnector {
    *
    * @param event {@link Event} to retry
    */
+  @SuppressWarnings("java:S899")
   public void addFailureEventToRetryQueue(final Event event) {
     if (event instanceof EnrichedEvent && ((EnrichedEvent) 
event).isReleased()) {
       return;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeDataNodeRemainingEventAndTimeMetrics.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeDataNodeRemainingEventAndTimeMetrics.java
index 2e8bf3c490b..83426a500c3 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeDataNodeRemainingEventAndTimeMetrics.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeDataNodeRemainingEventAndTimeMetrics.java
@@ -45,6 +45,7 @@ public class PipeDataNodeRemainingEventAndTimeMetrics 
implements IMetricSet {
   private static final Logger LOGGER =
       LoggerFactory.getLogger(PipeDataNodeRemainingEventAndTimeMetrics.class);
 
+  @SuppressWarnings("java:S3077")
   private volatile AbstractMetricService metricService;
 
   private final Map<String, PipeDataNodeRemainingEventAndTimeOperator>
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeDataRegionConnectorMetrics.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeDataRegionConnectorMetrics.java
index f467cac20bd..bf2ce7b5763 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeDataRegionConnectorMetrics.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeDataRegionConnectorMetrics.java
@@ -43,6 +43,7 @@ public class PipeDataRegionConnectorMetrics implements 
IMetricSet {
   private static final Logger LOGGER =
       LoggerFactory.getLogger(PipeDataRegionConnectorMetrics.class);
 
+  @SuppressWarnings("java:S3077")
   private volatile AbstractMetricService metricService;
 
   private final Map<String, PipeConnectorSubtask> connectorMap = new 
HashMap<>();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeDataRegionExtractorMetrics.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeDataRegionExtractorMetrics.java
index d18b4de51e4..dc90007f459 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeDataRegionExtractorMetrics.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeDataRegionExtractorMetrics.java
@@ -44,6 +44,7 @@ public class PipeDataRegionExtractorMetrics implements 
IMetricSet {
   private static final Logger LOGGER =
       LoggerFactory.getLogger(PipeDataRegionExtractorMetrics.class);
 
+  @SuppressWarnings("java:S3077")
   private volatile AbstractMetricService metricService;
 
   private final Map<String, IoTDBDataRegionExtractor> extractorMap = new 
ConcurrentHashMap<>();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeProcessorMetrics.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeProcessorMetrics.java
index 70ddf1d24af..d29defdc1fb 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeProcessorMetrics.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeProcessorMetrics.java
@@ -42,6 +42,7 @@ public class PipeProcessorMetrics implements IMetricSet {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(PipeProcessorMetrics.class);
 
+  @SuppressWarnings("java:S3077")
   private volatile AbstractMetricService metricService;
 
   private final Map<String, PipeProcessorSubtask> processorMap = new 
HashMap<>();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeSchemaRegionConnectorMetrics.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeSchemaRegionConnectorMetrics.java
index e3062c9bd78..482317b4790 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeSchemaRegionConnectorMetrics.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeSchemaRegionConnectorMetrics.java
@@ -42,6 +42,7 @@ public class PipeSchemaRegionConnectorMetrics implements 
IMetricSet {
   private static final Logger LOGGER =
       LoggerFactory.getLogger(PipeSchemaRegionConnectorMetrics.class);
 
+  @SuppressWarnings("java:S3077")
   private volatile AbstractMetricService metricService;
 
   private final ConcurrentMap<String, PipeConnectorSubtask> connectorMap =
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeSchemaRegionExtractorMetrics.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeSchemaRegionExtractorMetrics.java
index 44480ecac0f..6301494932b 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeSchemaRegionExtractorMetrics.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeSchemaRegionExtractorMetrics.java
@@ -41,6 +41,7 @@ public class PipeSchemaRegionExtractorMetrics implements 
IMetricSet {
   private static final Logger LOGGER =
       LoggerFactory.getLogger(PipeSchemaRegionExtractorMetrics.class);
 
+  @SuppressWarnings("java:S3077")
   private volatile AbstractMetricService metricService;
 
   private final Map<String, IoTDBSchemaRegionExtractor> extractorMap = new 
ConcurrentHashMap<>();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeSchemaRegionListenerMetrics.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeSchemaRegionListenerMetrics.java
index 3ee091c2147..ada38e46f2f 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeSchemaRegionListenerMetrics.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeSchemaRegionListenerMetrics.java
@@ -41,6 +41,7 @@ public class PipeSchemaRegionListenerMetrics implements 
IMetricSet {
   private static final Logger LOGGER =
       LoggerFactory.getLogger(PipeSchemaRegionListenerMetrics.class);
 
+  @SuppressWarnings("java:S3077")
   private volatile AbstractMetricService metricService;
 
   private final ConcurrentMap<Integer, SchemaRegionListeningQueue> 
listeningQueueMap =
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeWALInsertNodeCacheMetrics.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeWALInsertNodeCacheMetrics.java
index 64c81512cc1..ccf556e5e09 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeWALInsertNodeCacheMetrics.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/metric/PipeWALInsertNodeCacheMetrics.java
@@ -40,6 +40,7 @@ public class PipeWALInsertNodeCacheMetrics implements 
IMetricSet {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(PipeWALInsertNodeCacheMetrics.class);
 
+  @SuppressWarnings("java:S3077")
   private volatile AbstractMetricService metricService;
 
   private final Map<Integer, WALInsertNodeCache> cacheMap = new 
ConcurrentHashMap<>();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/pipeconsensus/PipeConsensusReceiver.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/pipeconsensus/PipeConsensusReceiver.java
index 2480ac702be..e3fb7a968da 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/pipeconsensus/PipeConsensusReceiver.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/pipeconsensus/PipeConsensusReceiver.java
@@ -79,6 +79,7 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.TreeSet;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.Lock;
@@ -1033,6 +1034,7 @@ public class PipeConsensusReceiver {
       }
     }
 
+    @SuppressWarnings("java:S3655")
     public PipeConsensusTsFileWriter borrowCorrespondingWriter(TCommitId 
commitId) {
       Optional<PipeConsensusTsFileWriter> diskBuffer =
           pipeConsensusTsFileWriterPool.stream()
@@ -1211,8 +1213,8 @@ public class PipeConsensusReceiver {
     private final PipeConsensusTsFileWriterPool tsFileWriterPool;
     private long onSyncedCommitIndex = 0;
     private int connectorRebootTimes = 0;
-    private volatile int WALEventCount = 0;
-    private volatile int tsFileEventCount = 0;
+    private AtomicInteger WALEventCount = new AtomicInteger(0);
+    private AtomicInteger tsFileEventCount = new AtomicInteger(0);
 
     public RequestExecutor(
         PipeConsensusReceiverMetrics metric, PipeConsensusTsFileWriterPool 
tsFileWriterPool) {
@@ -1235,10 +1237,10 @@ public class PipeConsensusReceiver {
       onSyncedCommitIndex = nextSyncedCommitIndex;
       // update metric, notice that curMeta is never null.
       if (isTransferTsFileSeal) {
-        tsFileEventCount--;
+        tsFileEventCount.decrementAndGet();
         metric.recordReceiveTsFileTimer(System.nanoTime() - 
curMeta.getStartApplyNanos());
       } else {
-        WALEventCount--;
+        WALEventCount.decrementAndGet();
         metric.recordReceiveWALTimer(System.nanoTime() - 
curMeta.getStartApplyNanos());
       }
     }
@@ -1287,10 +1289,10 @@ public class PipeConsensusReceiver {
         // update metric
         if (isTransferTsFilePiece && 
!reqExecutionOrderBuffer.contains(requestMeta)) {
           // only update tsFileEventCount when tsFileEvent is first enqueue.
-          tsFileEventCount++;
+          tsFileEventCount.incrementAndGet();
         }
         if (!isTransferTsFileSeal && !isTransferTsFilePiece) {
-          WALEventCount++;
+          WALEventCount.incrementAndGet();
         }
         reqExecutionOrderBuffer.add(requestMeta);
 
@@ -1471,11 +1473,11 @@ public class PipeConsensusReceiver {
   }
 
   public int getWALEventCount() {
-    return this.requestExecutor.WALEventCount;
+    return this.requestExecutor.WALEventCount.get();
   }
 
   public int getTsFileEventCount() {
-    return this.requestExecutor.tsFileEventCount;
+    return this.requestExecutor.tsFileEventCount.get();
   }
 
   public String getConsensusGroupIdStr() {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/wal/PipeWALResourceManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/wal/PipeWALResourceManager.java
index 9adb976c354..9bc3a4a030a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/wal/PipeWALResourceManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/wal/PipeWALResourceManager.java
@@ -61,6 +61,7 @@ public abstract class PipeWALResourceManager {
             Math.max(PipeWALResource.WAL_MIN_TIME_TO_LIVE_IN_MS / 1000, 1));
   }
 
+  @SuppressWarnings("java:S2222")
   private void ttlCheck() {
     final Iterator<Map.Entry<Long, PipeWALResource>> iterator =
         memtableIdToPipeWALResourceMap.entrySet().iterator();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
index 183af34671b..fc0706cef62 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
@@ -711,6 +711,7 @@ public class ClientRPCServiceImpl implements 
IClientRPCServiceWithHandler {
     }
   }
 
+  @SuppressWarnings("java:S2095") // close() do nothing
   private List<TsBlock> executeGroupByQueryInternal(
       SessionInfo sessionInfo,
       IDeviceID deviceID,
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java
index a624b7a669b..268dae8b884 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java
@@ -118,8 +118,7 @@ public class FilterAndProjectOperator implements 
ProcessOperator {
 
     long inputRowCount = input.getPositionCount();
     TsBlock filterResult = getFilterTsBlock(input);
-    filteredRowCount +=
-        filterResult == null ? inputRowCount : inputRowCount - 
filterResult.getPositionCount();
+    filteredRowCount += inputRowCount - filterResult.getPositionCount();
     operatorContext.recordSpecifiedInfo("Filtered Rows", 
Long.toString(filteredRowCount));
 
     // contains non-mappable udf, we leave calculation for TransformOperator
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/SchemaCacheEntry.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/SchemaCacheEntry.java
index bf6d5c31a86..b105156fdef 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/SchemaCacheEntry.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/SchemaCacheEntry.java
@@ -40,6 +40,7 @@ public class SchemaCacheEntry implements 
IMeasurementSchemaInfo {
   private final Map<String, String> tagMap;
   private final boolean isAligned;
 
+  @SuppressWarnings("java:S3077")
   private volatile ILastCacheContainer lastCacheContainer = null;
 
   public SchemaCacheEntry(
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/TimeSeriesSchemaCache.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/TimeSeriesSchemaCache.java
index 67a286ad444..686df60df36 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/TimeSeriesSchemaCache.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/TimeSeriesSchemaCache.java
@@ -200,7 +200,6 @@ public class TimeSeriesSchemaCache {
 
             @Override
             public void computeValue(int index, SchemaCacheEntry value) {
-              index = realIndex;
               if (value == null) {
                 indexOfMissingMeasurements.add(recordMissingIndex);
               } else {
@@ -216,7 +215,7 @@ public class TimeSeriesSchemaCache {
                                   + "Please check it.",
                               fullPath)));
                 }
-                schemaComputation.computeMeasurementOfView(index, value, 
value.isAligned());
+                schemaComputation.computeMeasurementOfView(realIndex, value, 
value.isAligned());
               }
             }
           });
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/dualkeycache/impl/FIFOCacheEntryManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/dualkeycache/impl/FIFOCacheEntryManager.java
index b19b1f4b4de..7d8a07acf4c 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/dualkeycache/impl/FIFOCacheEntryManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/dualkeycache/impl/FIFOCacheEntryManager.java
@@ -113,6 +113,8 @@ public class FIFOCacheEntryManager<FK, SK, V>
   static class FIFOCacheEntry<SK, V> implements ICacheEntry<SK, V> {
 
     private final SK secondKey;
+
+    @SuppressWarnings("java:S3077")
     private volatile ICacheEntryGroup cacheEntryGroup;
 
     private V value;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/dualkeycache/impl/LRUCacheEntryManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/dualkeycache/impl/LRUCacheEntryManager.java
index 7a3ae5dd2a6..726c4489ce2 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/dualkeycache/impl/LRUCacheEntryManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/dualkeycache/impl/LRUCacheEntryManager.java
@@ -111,6 +111,8 @@ class LRUCacheEntryManager<FK, SK, V>
   static class LRUCacheEntry<SK, V> implements ICacheEntry<SK, V> {
 
     private final SK secondKey;
+
+    @SuppressWarnings("java:S3077")
     private volatile ICacheEntryGroup cacheEntryGroup;
 
     private V value;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/info/CacheMNodeInfo.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/info/CacheMNodeInfo.java
index 91265a42f03..9663066e9eb 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/info/CacheMNodeInfo.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/mnode/info/CacheMNodeInfo.java
@@ -22,6 +22,7 @@ import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.info.B
 import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.lock.LockEntry;
 import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.pbtree.memory.cache.CacheEntry;
 
+@SuppressWarnings("java:S3077")
 public class CacheMNodeInfo extends BasicMNodeInfo {
 
   private volatile CacheEntry cacheEntry;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SchemaFile.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SchemaFile.java
index 248f85bec2e..692736474ba 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SchemaFile.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/SchemaFile.java
@@ -57,6 +57,7 @@ import java.util.Iterator;
  * file. It Loads or writes a page length bytes at once, with an 32 bits int 
to index a page inside
  * a file. Use SlottedFile to manipulate segment(sp) inside a page(an array of 
bytes).
  */
+@SuppressWarnings("java:S2095")
 public class SchemaFile implements ISchemaFile {
 
   private static final Logger logger = 
LoggerFactory.getLogger(SchemaFile.class);
@@ -94,6 +95,7 @@ public class SchemaFile implements ISchemaFile {
   // region Constructors
 
   // todo refactor constructor for schema file in Jan.
+  @SuppressWarnings("java:S899")
   private SchemaFile(
       String sgName, int schemaRegionId, boolean override, long ttl, boolean 
isEntity)
       throws IOException, MetadataException {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/loader/MNodeFactoryLoader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/loader/MNodeFactoryLoader.java
index a3e2b76cc7d..9e0fe8c2b7d 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/loader/MNodeFactoryLoader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/loader/MNodeFactoryLoader.java
@@ -40,7 +40,11 @@ public class MNodeFactoryLoader {
 
   private final List<String> scanPackages = new ArrayList<>();
   private String env;
+
+  @SuppressWarnings("java:S3077")
   private volatile IMNodeFactory<ICachedMNode> cachedMNodeIMNodeFactory;
+
+  @SuppressWarnings("java:S3077")
   private volatile IMNodeFactory<IMemMNode> memMNodeIMNodeFactory;
 
   private MNodeFactoryLoader() {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
index 5035b389279..23f046d7a15 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
@@ -545,6 +545,8 @@ public class StorageEngine implements IService {
     try {
       repairDataTaskManager.markRepairTaskStopping();
       repairDataTaskManager.abortRepairTask();
+    } catch (InterruptedException e) {
+      Thread.currentThread().interrupt();
     } catch (IOException ignored) {
     }
   }
@@ -625,6 +627,9 @@ public class StorageEngine implements IService {
     try {
       ConfigurationFileUtils.updateConfigurationFile(new 
File(configFileUrl.getFile()), properties);
     } catch (Exception e) {
+      if (e instanceof InterruptedException) {
+        Thread.currentThread().interrupt();
+      }
       return RpcUtils.getStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR, 
e.getMessage());
     }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
index bf3409076d8..ed24c9be37e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
@@ -2766,6 +2766,7 @@ public class DataRegion implements IDataRegionForQuery {
     try {
       return executeCompaction();
     } catch (InterruptedException ignored) {
+      Thread.currentThread().interrupt();
       return 0;
     } finally {
       CompactionScheduler.exclusiveUnlockCompactionSelection();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionFileCountExceededException.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionFileCountExceededException.java
index 4bf36ac9f4b..2b4a88a6513 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionFileCountExceededException.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionFileCountExceededException.java
@@ -25,6 +25,7 @@ public class CompactionFileCountExceededException extends 
Exception {
   }
 
   @Override
+  @SuppressWarnings("java:S3551")
   public Throwable fillInStackTrace() {
     return this;
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionLastTimeCheckFailedException.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionLastTimeCheckFailedException.java
index 26458513ba8..61bb138b1d0 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionLastTimeCheckFailedException.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionLastTimeCheckFailedException.java
@@ -50,6 +50,7 @@ public class CompactionLastTimeCheckFailedException extends 
RuntimeException {
   }
 
   @Override
+  @SuppressWarnings("java:S3551")
   public Throwable fillInStackTrace() {
     return this;
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionMemoryNotEnoughException.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionMemoryNotEnoughException.java
index 98072e157dd..369a6bea95b 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionMemoryNotEnoughException.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionMemoryNotEnoughException.java
@@ -26,6 +26,7 @@ public class CompactionMemoryNotEnoughException extends 
Exception {
   }
 
   @Override
+  @SuppressWarnings("java:S3551")
   public Throwable fillInStackTrace() {
     return this;
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionValidationFailedException.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionValidationFailedException.java
index b60dd6845fe..0d7abc2c683 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionValidationFailedException.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/exception/CompactionValidationFailedException.java
@@ -42,6 +42,7 @@ public class CompactionValidationFailedException extends 
RuntimeException {
   }
 
   @Override
+  @SuppressWarnings("java:S3551")
   public Throwable fillInStackTrace() {
     return this;
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/SettleCompactionTask.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/SettleCompactionTask.java
index bdfd3cf3051..753365f7531 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/SettleCompactionTask.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/SettleCompactionTask.java
@@ -37,6 +37,7 @@ import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * This settle task contains fully_dirty files and partially_dirty files. This 
task will do the
@@ -256,7 +257,7 @@ public class SettleCompactionTask extends 
InnerSpaceCompactionTask {
         dataRegionId);
     try {
       if (needRecoverTaskInfoFromLogFile) {
-        recoverTaskInfoFromLogFile();
+        recoverSettleTaskInfoFromLogFile();
       }
       recoverFullyDirtyFiles();
       recoverPartiallyDirtyFiles();
@@ -286,7 +287,7 @@ public class SettleCompactionTask extends 
InnerSpaceCompactionTask {
     }
   }
 
-  public void recoverTaskInfoFromLogFile() throws IOException {
+  public void recoverSettleTaskInfoFromLogFile() throws IOException {
     LOGGER.info(
         "{}-{} [Compaction][Recover] compaction log is {}",
         storageGroupName,
@@ -384,4 +385,9 @@ public class SettleCompactionTask extends 
InnerSpaceCompactionTask {
             otherSettleCompactionTask.selectedTsFileResourceList)
         && 
this.performer.getClass().isInstance(otherSettleCompactionTask.performer);
   }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(fullyDirtyFiles, selectedTsFileResourceList, 
performer);
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
index c47c8493ff6..d2b2bf25b28 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
@@ -174,7 +174,7 @@ public class MultiTsFileDeviceIterator implements 
AutoCloseable {
    *
    * @return Pair of device full path and whether this device is aligned
    */
-  @SuppressWarnings("squid:S135")
+  @SuppressWarnings({"squid:S135", "java:S2259"})
   public Pair<IDeviceID, Boolean> nextDevice() throws IllegalPathException {
     List<TsFileResource> toBeRemovedResources = new LinkedList<>();
     Pair<IDeviceID, Boolean> minDevice = null;
@@ -490,6 +490,7 @@ public class MultiTsFileDeviceIterator implements 
AutoCloseable {
                 }
 
                 @Override
+                @SuppressWarnings("java:S2272")
                 public Map<String, List<ChunkMetadata>> next() {
                   return Collections.emptyMap();
                 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileReader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileReader.java
index 6c62692889d..745dde2f696 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileReader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/io/CompactionTsFileReader.java
@@ -105,6 +105,7 @@ public class CompactionTsFileReader extends 
TsFileSequenceReader {
     return super.readMemChunk(metaData);
   }
 
+  @SuppressWarnings("java:S2177")
   public ChunkHeader readChunkHeader(long position) throws IOException {
     return ChunkHeader.deserializeFrom(tsFileInput, position);
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairTimePartitionScanTask.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairTimePartitionScanTask.java
index d3b3ed8e963..828307e6397 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairTimePartitionScanTask.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairTimePartitionScanTask.java
@@ -56,6 +56,7 @@ public class RepairTimePartitionScanTask implements 
Callable<Void> {
   }
 
   @Override
+  @SuppressWarnings("java:S2142")
   public Void call() {
     try {
       scanTimePartitionFiles();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/UnsortedFileRepairTaskScheduler.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/UnsortedFileRepairTaskScheduler.java
index 32f18434d94..5cdf9493581 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/UnsortedFileRepairTaskScheduler.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/UnsortedFileRepairTaskScheduler.java
@@ -174,6 +174,7 @@ public class UnsortedFileRepairTaskScheduler implements 
Runnable {
   }
 
   @Override
+  @SuppressWarnings("java:S2142")
   public void run() {
     try {
       if (!checkConditionsToStartRepairTask()) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskManager.java
index 691318a6f4a..db41bbd53e5 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskManager.java
@@ -76,7 +76,7 @@ public class CompactionScheduleTaskManager implements 
IService {
     logger.info("Compaction schedule task manager started.");
   }
 
-  public void stopCompactionScheduleTasks() {
+  public void stopCompactionScheduleTasks() throws InterruptedException {
     lock.lock();
     try {
       for (Future<Void> task : submitCompactionScheduleTaskFutures) {
@@ -88,6 +88,8 @@ public class CompactionScheduleTaskManager implements 
IService {
         }
         try {
           task.get();
+        } catch (InterruptedException e) {
+          throw e;
         } catch (Exception ignored) {
         }
       }
@@ -98,7 +100,7 @@ public class CompactionScheduleTaskManager implements 
IService {
     }
   }
 
-  public void checkAndMayApplyConfigurationChange() {
+  public void checkAndMayApplyConfigurationChange() throws 
InterruptedException {
     lock.lock();
     try {
       // ignored the change if executing repair data task
@@ -186,7 +188,7 @@ public class CompactionScheduleTaskManager implements 
IService {
     init = true;
   }
 
-  private void restartThreadPool() {
+  private void restartThreadPool() throws InterruptedException {
     stopCompactionScheduleTasks();
     compactionScheduleTaskThreadPool.shutdownNow();
     waitForThreadPoolTerminated();
@@ -286,7 +288,7 @@ public class CompactionScheduleTaskManager implements 
IService {
       repairTaskStatus.compareAndSet(RepairTaskStatus.RUNNING, 
RepairTaskStatus.STOPPING);
     }
 
-    public void abortRepairTask() {
+    public void abortRepairTask() throws InterruptedException {
       if (repairTaskStatus.get() == RepairTaskStatus.STOPPED) {
         return;
       }
@@ -299,6 +301,8 @@ public class CompactionScheduleTaskManager implements 
IService {
         }
         try {
           task.get();
+        } catch (InterruptedException e) {
+          throw e;
         } catch (Exception ignored) {
         }
       }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskWorker.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskWorker.java
index 220a4835955..3469a0a6dec 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskWorker.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskWorker.java
@@ -48,6 +48,7 @@ public class CompactionScheduleTaskWorker implements 
Callable<Void> {
   }
 
   @Override
+  @SuppressWarnings("java:S2142")
   public Void call() {
     while (true) {
       try {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/TTLScheduleTask.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/TTLScheduleTask.java
index ec1ec870b6f..f7341876ec5 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/TTLScheduleTask.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/TTLScheduleTask.java
@@ -48,6 +48,7 @@ public class TTLScheduleTask implements Callable<Void> {
   }
 
   @Override
+  @SuppressWarnings("java:S2142")
   public Void call() throws Exception {
     while (true) {
       try {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/PrintUtil.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/PrintUtil.java
index 7df1bffc014..bbe5133fd2c 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/PrintUtil.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/PrintUtil.java
@@ -23,7 +23,7 @@ class PrintUtil {
   static String[] header_1 = {"", "Total", "Overlap", "Overlap/Total"};
   static String[] header_2 = {"", "Total", "Sequence", "UnSequence", 
"UnSequence/Total"};
 
-  static long MSize = 1024 * 1024;
+  static long MSize = 1024 * 1024L;
 
   public static void printOneStatistics(OverlapStatistic overlapStatistic, 
String label) {
     System.out.println();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TimePartitionProcessTask.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TimePartitionProcessTask.java
index a95b19c2dc3..cd71d1b7dac 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TimePartitionProcessTask.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TimePartitionProcessTask.java
@@ -41,7 +41,8 @@ public class TimePartitionProcessTask {
     this.timePartitionFiles = timePartitionFiles;
   }
 
-  public OverlapStatistic 
processTimePartition(SequenceFileSubTaskThreadExecutor fileTaskExecutor) {
+  public OverlapStatistic 
processTimePartition(SequenceFileSubTaskThreadExecutor fileTaskExecutor)
+      throws InterruptedException {
     long startTime = System.currentTimeMillis();
     UnseqSpaceStatistics unseqSpaceStatistics = 
buildUnseqSpaceStatistics(timePartitionFiles.right);
 
@@ -120,7 +121,8 @@ public class TimePartitionProcessTask {
   public OverlapStatistic processSequenceSpaceAsync(
       SequenceFileSubTaskThreadExecutor executor,
       UnseqSpaceStatistics unseqSpaceStatistics,
-      List<String> seqFiles) {
+      List<String> seqFiles)
+      throws InterruptedException {
     long startTime = System.currentTimeMillis();
     OverlapStatistic overlapStatistic = new OverlapStatistic();
     List<Future<SequenceFileTaskSummary>> futures = new ArrayList<>();
@@ -131,6 +133,8 @@ public class TimePartitionProcessTask {
       try {
         SequenceFileTaskSummary sequenceFileTaskSummary = future.get();
         
overlapStatistic.mergeSingleSequenceFileTaskResult(sequenceFileTaskSummary);
+      } catch (InterruptedException e) {
+        throw e;
       } catch (Exception e) {
         e.printStackTrace();
       }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TimePartitionProcessWorker.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TimePartitionProcessWorker.java
index a8e621a7c36..29ac17a67f2 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TimePartitionProcessWorker.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tool/TimePartitionProcessWorker.java
@@ -43,7 +43,14 @@ public class TimePartitionProcessWorker {
                   new 
SequenceFileSubTaskThreadExecutor(OverlapStatisticTool.subTaskNum);
               while (!workerTaskList.isEmpty()) {
                 TimePartitionProcessTask task = workerTaskList.remove(0);
-                OverlapStatistic partialRet = 
task.processTimePartition(fileProcessTaskExecutor);
+                OverlapStatistic partialRet = null;
+                try {
+                  partialRet = 
task.processTimePartition(fileProcessTaskExecutor);
+                } catch (InterruptedException e) {
+                  fileProcessTaskExecutor.shutdown();
+                  Thread.currentThread().interrupt();
+                  return;
+                }
                 workerResults.add(partialRet);
               }
               latch.countDown();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/ModificationFile.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/ModificationFile.java
index ce60cdba0d2..6489c7e5299 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/ModificationFile.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/ModificationFile.java
@@ -63,7 +63,7 @@ public class ModificationFile implements AutoCloseable {
   private String filePath;
   private final SecureRandom random = new SecureRandom();
 
-  private static final long COMPACT_THRESHOLD = 1024 * 1024;
+  private static final long COMPACT_THRESHOLD = 1024 * 1024L;
 
   private boolean hasCompacted = false;
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/io/LocalTextModificationAccessor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/io/LocalTextModificationAccessor.java
index cd80984fa81..0f33d0c59a4 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/io/LocalTextModificationAccessor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/modification/io/LocalTextModificationAccessor.java
@@ -168,6 +168,7 @@ public class LocalTextModificationAccessor
   }
 
   @Override
+  @SuppressWarnings("java:S2259")
   public void writeWithOutSync(Modification mod) throws IOException {
     if (fos == null) {
       fos = new FileOutputStream(filePath, true);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java
index e9fbfb8525c..33245ebf9e5 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java
@@ -554,6 +554,7 @@ public class WALNode implements IWALNode {
     }
 
     // synchronize memTable to make sure snapshot is made before memTable 
flush operation
+    @SuppressWarnings("java:S2445")
     private void snapshotMemTable(DataRegion dataRegion, File tsFile, 
MemTableInfo memTableInfo) {
       IMemTable memTable = memTableInfo.getMemTable();
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformer.java
index 85d6ccba6f3..71ff9417e91 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/UnsealedTsFileRecoverPerformer.java
@@ -220,7 +220,9 @@ public class UnsealedTsFileRecoverPerformer extends 
AbstractTsFileRecoverPerform
           throw new RuntimeException("Unsupported type " + walEntry.getType());
       }
     } catch (Exception e) {
-      logger.warn("meet error when redo wal of {}", 
tsFileResource.getTsFile(), e);
+      if (tsFileResource != null) {
+        logger.warn("meet error when redo wal of {}", 
tsFileResource.getTsFile(), e);
+      }
     }
   }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/DirectoryChecker.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/DirectoryChecker.java
index 3d4ec251331..65b4fdfe0bd 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/DirectoryChecker.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/DirectoryChecker.java
@@ -50,6 +50,7 @@ public class DirectoryChecker {
     return DirectoryCheckerHolder.INSTANCE;
   }
 
+  @SuppressWarnings("java:S2095") // will be closed by randomAccessFileList
   public void registerDirectory(File dir) throws ConfigurationException, 
IOException {
     if (dir.exists() && !dir.isDirectory()) {
       throw new ConfigurationException(
@@ -77,6 +78,7 @@ public class DirectoryChecker {
     }
     // File is already locked other virtual machine
     if (lock == null) {
+      randomAccessFile.close();
       throw new ConfigurationException(
           String.format(
               "Conflict is detected in directory %s, which may be being used 
by another IoTDB (ProcessId=%s). Please check configuration and restart.",
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionPrefetchingQueue.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionPrefetchingQueue.java
index 909d3dc53a7..83549212ed6 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionPrefetchingQueue.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionPrefetchingQueue.java
@@ -389,30 +389,26 @@ public abstract class SubscriptionPrefetchingQueue {
   /////////////////////////////// stringify ///////////////////////////////
 
   protected Map<String, String> coreReportMessage() {
-    return new HashMap<String, String>() {
-      {
-        put("brokerId", brokerId);
-        put("topicName", topicName);
-        put("size of uncommittedEvents", 
String.valueOf(uncommittedEvents.size()));
-        put("subscriptionCommitIdGenerator", 
subscriptionCommitIdGenerator.toString());
-        put("isCompleted", String.valueOf(isCompleted));
-        put("isClosed", String.valueOf(isClosed));
-      }
-    };
+    Map<String, String> result = new HashMap<>(6);
+    result.put("brokerId", brokerId);
+    result.put("topicName", topicName);
+    result.put("size of uncommittedEvents", 
String.valueOf(uncommittedEvents.size()));
+    result.put("subscriptionCommitIdGenerator", 
subscriptionCommitIdGenerator.toString());
+    result.put("isCompleted", String.valueOf(isCompleted));
+    result.put("isClosed", String.valueOf(isClosed));
+    return result;
   }
 
   protected Map<String, String> allReportMessage() {
-    return new HashMap<String, String>() {
-      {
-        put("brokerId", brokerId);
-        put("topicName", topicName);
-        put("size of inputPendingQueue", 
String.valueOf(inputPendingQueue.size()));
-        put("size of prefetchingQueue", 
String.valueOf(prefetchingQueue.size()));
-        put("uncommittedEvents", uncommittedEvents.toString());
-        put("subscriptionCommitIdGenerator", 
subscriptionCommitIdGenerator.toString());
-        put("isCompleted", String.valueOf(isCompleted));
-        put("isClosed", String.valueOf(isClosed));
-      }
-    };
+    Map<String, String> result = new HashMap<>(8);
+    result.put("brokerId", brokerId);
+    result.put("topicName", topicName);
+    result.put("size of inputPendingQueue", 
String.valueOf(inputPendingQueue.size()));
+    result.put("size of prefetchingQueue", 
String.valueOf(prefetchingQueue.size()));
+    result.put("uncommittedEvents", uncommittedEvents.toString());
+    result.put("subscriptionCommitIdGenerator", 
subscriptionCommitIdGenerator.toString());
+    result.put("isCompleted", String.valueOf(isCompleted));
+    result.put("isClosed", String.valueOf(isClosed));
+    return result;
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/PBTreeFileSketchTool.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/PBTreeFileSketchTool.java
index 8e27f9fe2b6..2af052c322d 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/PBTreeFileSketchTool.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/PBTreeFileSketchTool.java
@@ -147,14 +147,15 @@ public class PBTreeFileSketchTool {
   @SuppressWarnings("squid:S106")
   public static void sketchFile(String inputFile, String outputFile)
       throws IOException, MetadataException {
-    PrintWriter pw = new PrintWriter(new FileWriter(outputFile, false));
-    ISchemaFile sf = 
SchemaFile.loadSchemaFile(SystemFileFactory.INSTANCE.getFile(inputFile));
-    try {
+    ISchemaFile sf = null;
+    try (PrintWriter pw = new PrintWriter(new FileWriter(outputFile, false))) {
+      sf = 
SchemaFile.loadSchemaFile(SystemFileFactory.INSTANCE.getFile(inputFile));
       String res = ((SchemaFile) sf).inspect(pw);
       System.out.println(res);
     } finally {
-      sf.close();
-      pw.close();
+      if (sf != null) {
+        sf.close();
+      }
     }
   }
 }
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionAliasAndTagTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionAliasAndTagTest.java
index 0d2dcd674a0..c6e283e11b6 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionAliasAndTagTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionAliasAndTagTest.java
@@ -42,6 +42,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+@SuppressWarnings("java:S5783")
 public class SchemaRegionAliasAndTagTest extends AbstractSchemaRegionTest {
 
   private static final Logger logger = 
LoggerFactory.getLogger(SchemaRegionAliasAndTagTest.class);
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleCompactionRecoverTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleCompactionRecoverTest.java
index 802e5e4fb5a..a8b92828bc9 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleCompactionRecoverTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/settle/SettleCompactionRecoverTest.java
@@ -529,7 +529,7 @@ public class SettleCompactionRecoverTest extends 
AbstractCompactionTest {
     // handle exception, delete all_deleted files
     task.recoverFullyDirtyFiles();
     try {
-      task.recoverTaskInfoFromLogFile();
+      task.recoverSettleTaskInfoFromLogFile();
       Assert.fail();
     } catch (Exception e) {
       // do nothing
@@ -1102,7 +1102,7 @@ public class SettleCompactionRecoverTest extends 
AbstractCompactionTest {
     task.recoverFullyDirtyFiles();
 
     try {
-      task.recoverTaskInfoFromLogFile();
+      task.recoverSettleTaskInfoFromLogFile();
       Assert.fail();
     } catch (Exception e) {
       // do nothing
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/io/WALFileTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/io/WALFileTest.java
index a15cc27fa26..8a13bce60aa 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/io/WALFileTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/io/WALFileTest.java
@@ -163,12 +163,12 @@ public class WALFileTest {
   @Test
   public void testReadMetadataFromBrokenFile() throws IOException {
     ILogWriter walWriter = new WALWriter(walFile);
-    assertThrows(
-        IOException.class,
-        () -> WALMetaData.readFromWALFile(walFile, 
FileChannel.open(walFile.toPath())));
+    final FileChannel fileChannel1 = FileChannel.open(walFile.toPath());
+    assertThrows(IOException.class, () -> WALMetaData.readFromWALFile(walFile, 
fileChannel1));
     walWriter.close();
-    WALMetaData walMetaData =
-        WALMetaData.readFromWALFile(walFile, 
FileChannel.open(walFile.toPath()));
+    FileChannel fileChannel2 = FileChannel.open(walFile.toPath());
+    WALMetaData walMetaData = WALMetaData.readFromWALFile(walFile, 
fileChannel2);
+    fileChannel2.close();
     assertTrue(walMetaData.getMemTablesId().isEmpty());
   }
 
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCacheTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCacheTest.java
index a001d4e1b9f..10a23d89bd3 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCacheTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCacheTest.java
@@ -118,9 +118,7 @@ public class WALInsertNodeCacheTest {
       Thread getInsertNodeThread =
           new Thread(
               () -> {
-                try {
-                  assertEquals(node1, cache.getInsertNode(position));
-                } catch (Throwable e) {
+                if (!node1.equals(cache.getInsertNode(position))) {
                   failure.set(true);
                 }
               });
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
index 225e0d2f063..45785f045b9 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
@@ -281,7 +281,7 @@ public class CommonConfig {
   // maximum number of Cluster Databases allowed
   private int databaseLimitThreshold = -1;
 
-  private long datanodeTokenTimeoutMS = 180 * 1000; // 3 minutes
+  private long datanodeTokenTimeoutMS = 180 * 1000L; // 3 minutes
 
   // timeseries and device limit
   private long seriesLimitThreshold = -1;
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/ProgressIndex.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/ProgressIndex.java
index 7bbcedfc2db..c876af8f09f 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/ProgressIndex.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/ProgressIndex.java
@@ -90,6 +90,11 @@ public abstract class ProgressIndex {
     return this.equals((ProgressIndex) obj);
   }
 
+  @Override
+  public int hashCode() {
+    return super.hashCode();
+  }
+
   /**
    * Define the isEqualOrAfter relation, A.isEqualOrAfter(B) if and only if 
each tuple member in A
    * is greater than or equal to B in the corresponding total order relation.
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeConnectorCriticalException.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeConnectorCriticalException.java
index adbc31f5315..1cd37f50b56 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeConnectorCriticalException.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeConnectorCriticalException.java
@@ -46,6 +46,11 @@ public class PipeRuntimeConnectorCriticalException extends 
PipeRuntimeCriticalEx
         && Objects.equals(getTimeStamp(), ((PipeRuntimeException) 
obj).getTimeStamp());
   }
 
+  @Override
+  public int hashCode() {
+    return super.hashCode();
+  }
+
   @Override
   public void serialize(ByteBuffer byteBuffer) {
     
PipeRuntimeExceptionType.CONNECTOR_CRITICAL_EXCEPTION.serialize(byteBuffer);
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeNonCriticalException.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeNonCriticalException.java
index 50273016abc..dbd8bc18ff2 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeNonCriticalException.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeNonCriticalException.java
@@ -46,6 +46,11 @@ public class PipeRuntimeNonCriticalException extends 
PipeRuntimeException {
         && Objects.equals(getTimeStamp(), ((PipeRuntimeException) 
obj).getTimeStamp());
   }
 
+  @Override
+  public int hashCode() {
+    return super.hashCode();
+  }
+
   @Override
   public void serialize(ByteBuffer byteBuffer) {
     PipeRuntimeExceptionType.NON_CRITICAL_EXCEPTION.serialize(byteBuffer);
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeOutOfMemoryCriticalException.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeOutOfMemoryCriticalException.java
index 240bb8a29f9..4691d24c6ec 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeOutOfMemoryCriticalException.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/pipe/PipeRuntimeOutOfMemoryCriticalException.java
@@ -47,6 +47,11 @@ public class PipeRuntimeOutOfMemoryCriticalException extends 
PipeRuntimeCritical
         && Objects.equals(getTimeStamp(), ((PipeRuntimeException) 
obj).getTimeStamp());
   }
 
+  @Override
+  public int hashCode() {
+    return super.hashCode();
+  }
+
   @Override
   public void serialize(ByteBuffer byteBuffer) {
     
PipeRuntimeExceptionType.OUT_OF_MEMORY_CRITICAL_EXCEPTION.serialize(byteBuffer);
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/limiter/PipeEndPointRateLimiter.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/limiter/PipeEndPointRateLimiter.java
index f89c5b4cec8..c55e2391e9b 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/limiter/PipeEndPointRateLimiter.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/limiter/PipeEndPointRateLimiter.java
@@ -33,6 +33,7 @@ import java.util.concurrent.TimeUnit;
 public class PipeEndPointRateLimiter {
 
   // The task agent is used to check if the pipe is still alive
+  @SuppressWarnings("java:S3077")
   private static volatile PipeTaskAgent taskAgent;
 
   private final String pipeName;
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/protocol/IoTDBAirGapConnector.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/protocol/IoTDBAirGapConnector.java
index 5d8e87fbd87..8972fb424b3 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/protocol/IoTDBAirGapConnector.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/connector/protocol/IoTDBAirGapConnector.java
@@ -145,6 +145,7 @@ public abstract class IoTDBAirGapConnector extends 
IoTDBConnector {
   }
 
   @Override
+  @SuppressWarnings("java:S2095")
   public void handshake() throws Exception {
     for (int i = 0; i < sockets.size(); i++) {
       if (Boolean.TRUE.equals(isSocketAlive.get(i))) {
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/progress/PipeEventCommitter.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/progress/PipeEventCommitter.java
index 559e53ee15b..2359c442cd3 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/progress/PipeEventCommitter.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/progress/PipeEventCommitter.java
@@ -60,6 +60,7 @@ public class PipeEventCommitter {
     return commitIdGenerator.incrementAndGet();
   }
 
+  @SuppressWarnings("java:S899")
   public synchronized void commit(final EnrichedEvent event) {
     commitQueue.offer(event);
 
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/subtask/PipeAbstractConnectorSubtask.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/subtask/PipeAbstractConnectorSubtask.java
index e6a2399f7e8..25ddb438806 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/subtask/PipeAbstractConnectorSubtask.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/task/subtask/PipeAbstractConnectorSubtask.java
@@ -50,6 +50,7 @@ public abstract class PipeAbstractConnectorSubtask extends 
PipeReportableSubtask
   protected volatile boolean isSubmitted = false;
 
   // For cleaning up the last event when the pipe is dropped
+  @SuppressWarnings("java:S3077")
   protected volatile Event lastExceptionEvent;
 
   protected PipeAbstractConnectorSubtask(
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/GcTimeAlerter.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/GcTimeAlerter.java
index e4396c09b11..e501541be14 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/GcTimeAlerter.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/GcTimeAlerter.java
@@ -26,7 +26,9 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 
 public class GcTimeAlerter implements JvmGcMonitorMetrics.GcTimeAlertHandler {
+  @SuppressWarnings("java:S2885")
   private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 
HH:mm:ss");
+
   private static final Logger logger = 
LoggerFactory.getLogger(GcTimeAlerter.class);
 
   /**
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFAbs.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFAbs.java
index b57c32df531..24dc7021bad 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFAbs.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFAbs.java
@@ -34,6 +34,7 @@ import org.apache.tsfile.block.column.ColumnBuilder;
 
 import java.io.IOException;
 
+@SuppressWarnings("java:S2177")
 public class UDTFAbs extends UDTFMath {
 
   @Override
diff --git 
a/library-udf/src/main/java/org/apache/iotdb/library/dlearn/UDTFAR.java 
b/library-udf/src/main/java/org/apache/iotdb/library/dlearn/UDTFAR.java
index ab9ae58719f..8e5e5096e17 100644
--- a/library-udf/src/main/java/org/apache/iotdb/library/dlearn/UDTFAR.java
+++ b/library-udf/src/main/java/org/apache/iotdb/library/dlearn/UDTFAR.java
@@ -57,6 +57,7 @@ public class UDTFAR implements UDTF {
   }
 
   @Override
+  @SuppressWarnings("javabugs:S6466")
   public void terminate(PointCollector collector) throws Exception {
     int length = timeWindow.size();
     if (length <= this.p) {
diff --git 
a/library-udf/src/main/java/org/apache/iotdb/library/dmatch/UDTFPtnSym.java 
b/library-udf/src/main/java/org/apache/iotdb/library/dmatch/UDTFPtnSym.java
index b4e886e8939..e3642dd1ead 100644
--- a/library-udf/src/main/java/org/apache/iotdb/library/dmatch/UDTFPtnSym.java
+++ b/library-udf/src/main/java/org/apache/iotdb/library/dmatch/UDTFPtnSym.java
@@ -64,6 +64,7 @@ public class UDTFPtnSym implements UDTF {
   }
 
   @Override
+  @SuppressWarnings("javabugs:S6466")
   public void transform(RowWindow rowWindow, PointCollector collector) throws 
Exception {
     if (rowWindow.windowSize() < window) { // skip too short series
       return;
diff --git 
a/library-udf/src/main/java/org/apache/iotdb/library/dprofile/UDTFSample.java 
b/library-udf/src/main/java/org/apache/iotdb/library/dprofile/UDTFSample.java
index 5f1545c853e..2d39eef3152 100644
--- 
a/library-udf/src/main/java/org/apache/iotdb/library/dprofile/UDTFSample.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/dprofile/UDTFSample.java
@@ -122,6 +122,7 @@ public class UDTFSample implements UDTF {
   }
 
   @Override
+  @SuppressWarnings("javabugs:S6320")
   public void transform(RowWindow rowWindow, PointCollector collector) throws 
Exception {
     // equal-distance sampling
     int n = rowWindow.windowSize();

Reply via email to