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

tanxinyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new ea68bc31d49 Avoid deleting wal files pinned by the iot consensus 
(#12006)
ea68bc31d49 is described below

commit ea68bc31d496dea0d3e19ebd080ef22232460694
Author: Alan Choo <[email protected]>
AuthorDate: Tue Jan 30 20:39:21 2024 +0800

    Avoid deleting wal files pinned by the iot consensus (#12006)
---
 .../storageengine/dataregion/wal/node/WALNode.java | 32 ++++++----------------
 1 file changed, 9 insertions(+), 23 deletions(-)

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 9b26ead91f9..c89f2d8cb9c 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
@@ -388,11 +388,11 @@ public class WALNode implements IWALNode {
 
     /** Delete obsolete wal files while recording which succeeded or failed */
     private void deleteOutdatedFilesAndUpdateMetric() {
-      for (File currentWal : sortedWalFilesExcludingLast) {
-        long searchIndex = 
WALFileUtils.parseStartSearchIndex(currentWal.getName());
+      for (int fileArrIdx = 0; fileArrIdx < 
sortedWalFilesExcludingLast.length; ++fileArrIdx) {
+        File currentWal = sortedWalFilesExcludingLast[fileArrIdx];
         WALFileStatus walFileStatus = 
WALFileUtils.parseStatusCode(currentWal.getName());
         long versionId = WALFileUtils.parseVersionId(currentWal.getName());
-        if (canDeleteFile(searchIndex, walFileStatus, versionId)) {
+        if (canDeleteFile(fileArrIdx, walFileStatus, versionId)) {
           long fileSize = currentWal.length();
           if (currentWal.delete()) {
             deleteFileSize += fileSize;
@@ -409,23 +409,10 @@ public class WALNode implements IWALNode {
     }
 
     private int initFileIndexAfterFilterSafelyDeleteIndex() {
-      int endFileIndex =
-          safelyDeletedSearchIndex == DEFAULT_SAFELY_DELETED_SEARCH_INDEX
-              ? sortedWalFilesExcludingLast.length
-              : WALFileUtils.binarySearchFileBySearchIndex(
-                  sortedWalFilesExcludingLast, safelyDeletedSearchIndex + 1);
-      // delete files whose file status is CONTAINS_NONE_SEARCH_INDEX
-      if (endFileIndex == -1) {
-        endFileIndex = 0;
-      }
-      while (endFileIndex < sortedWalFilesExcludingLast.length) {
-        if 
(WALFileUtils.parseStatusCode(sortedWalFilesExcludingLast[endFileIndex].getName())
-            == WALFileStatus.CONTAINS_SEARCH_INDEX) {
-          break;
-        }
-        endFileIndex++;
-      }
-      return endFileIndex;
+      return safelyDeletedSearchIndex == DEFAULT_SAFELY_DELETED_SEARCH_INDEX
+          ? sortedWalFilesExcludingLast.length
+          : WALFileUtils.binarySearchFileBySearchIndex(
+              sortedWalFilesExcludingLast, safelyDeletedSearchIndex + 1);
     }
 
     /** Return true iff effective information ratio is too small or disk usage 
is too large. */
@@ -596,13 +583,12 @@ public class WALNode implements IWALNode {
           memTableIdsOfCurrentWal);
     }
 
-    private boolean canDeleteFile(long searchIndex, WALFileStatus 
walFileStatus, long versionId) {
-      return (searchIndex < safelyDeletedSearchIndex
+    private boolean canDeleteFile(long fileArrIdx, WALFileStatus 
walFileStatus, long versionId) {
+      return (fileArrIdx < fileIndexAfterFilterSafelyDeleteIndex
               || walFileStatus == WALFileStatus.CONTAINS_NONE_SEARCH_INDEX)
           && !isContainsActiveOrPinnedMemTable(versionId);
     }
   }
-
   // endregion
 
   // region Search interfaces for consensus group

Reply via email to