This is an automated email from the ASF dual-hosted git repository. xingtanzjr pushed a commit to branch fix_wal_sonar_bug_0629 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit f78e80eb95ff29dc3b5d045731ef6f4aa92b1eb1 Author: Jinrui.Zhang <[email protected]> AuthorDate: Thu Jun 29 12:32:13 2023 +0800 fix sonar bugs in wal module --- .../apache/iotdb/db/storageengine/dataregion/wal/WALManager.java | 1 + .../dataregion/wal/allocation/FirstCreateStrategy.java | 4 +++- .../storageengine/dataregion/wal/recover/WALNodeRecoverTask.java | 7 ++++++- .../db/storageengine/dataregion/wal/recover/WALRecoverManager.java | 1 + .../db/storageengine/dataregion/wal/utils/WALEntryHandler.java | 1 + 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/WALManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/WALManager.java index 997c9328a6c..26d87dffa5b 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/WALManager.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/WALManager.java @@ -197,6 +197,7 @@ public class WALManager implements IService { Thread.sleep(50); } catch (InterruptedException e) { logger.error("Interrupted when waiting for all write-ahead logs flushed."); + Thread.currentThread().interrupt(); } } } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/FirstCreateStrategy.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/FirstCreateStrategy.java index 67b1c6f4f0c..30e67365a3d 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/FirstCreateStrategy.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/FirstCreateStrategy.java @@ -73,7 +73,9 @@ public class FirstCreateStrategy extends AbstractNodeAllocationStrategy { if (identifier2Nodes.containsKey(applicantUniqueId)) { return; } - + // Although walNode is defined as a local variable, it is added into a global var + // identifier2Nodes later. So we cannot close it here. + @SuppressWarnings("squid:S2095") IWALNode walNode = createWALNode(applicantUniqueId, logDirectory, startFileVersion, startSearchIndex); if (walNode instanceof WALNode) { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALNodeRecoverTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALNodeRecoverTask.java index 49a2be2ab06..0f1e0d6a5b4 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALNodeRecoverTask.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALNodeRecoverTask.java @@ -42,6 +42,7 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; +import java.nio.file.Files; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -103,7 +104,11 @@ public class WALNodeRecoverTask implements Runnable { // delete checkpoint info to avoid repeated recover File[] checkpointFiles = CheckpointFileUtils.listAllCheckpointFiles(logDirectory); for (File checkpointFile : checkpointFiles) { - checkpointFile.delete(); + try { + Files.delete(checkpointFile.toPath()); + } catch (IOException e) { + logger.error("error when delete checkpoint file. {}", checkpointFile, e); + } } // recover version id and search index long[] indexInfo = recoverLastFile(); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALRecoverManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALRecoverManager.java index 7375d5737ad..d306e69cb42 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALRecoverManager.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/WALRecoverManager.java @@ -54,6 +54,7 @@ public class WALRecoverManager { // true when the recover procedure has started private volatile boolean hasStarted = false; // start recovery after all data regions have submitted unsealed zero-level TsFiles + @SuppressWarnings("squid:S3077") private volatile CountDownLatch allDataRegionScannedLatch; // threads to recover wal nodes private ExecutorService recoverThreadPool; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryHandler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryHandler.java index 26e6dd17d45..27b38844f33 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryHandler.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryHandler.java @@ -37,6 +37,7 @@ public class WALEntryHandler { private long memTableId = -1; // cached value, null after this value is flushed to wal successfully + @SuppressWarnings("squid:S3077") private volatile WALEntryValue value; // wal entry's position in the wal, valid after the value is flushed to wal successfully // it's safe to use volatile here to make this reference thread-safe.
