You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ta...@apache.org on 2022/06/23 04:01:03 UTC

[iotdb] branch master updated: delete tsfiles when recovering data region (#6388)

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 346ed83119 delete tsfiles when recovering data region (#6388)
346ed83119 is described below

commit 346ed831191b976713fd4657dc79ce755aadd5f3
Author: Alan Choo <43...@users.noreply.github.com>
AuthorDate: Thu Jun 23 12:00:57 2022 +0800

    delete tsfiles when recovering data region (#6388)
---
 .../db/conf/directories/DirectoryManager.java      |  6 ++++++
 .../iotdb/db/engine/storagegroup/DataRegion.java   | 25 +++++++++++++++++++---
 2 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/conf/directories/DirectoryManager.java b/server/src/main/java/org/apache/iotdb/db/conf/directories/DirectoryManager.java
index a9829ce45f..273f071008 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/directories/DirectoryManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/directories/DirectoryManager.java
@@ -185,4 +185,10 @@ public class DirectoryManager {
   public List<String> getAllUnSequenceFileFolders() {
     return new ArrayList<>(unsequenceFileFolders);
   }
+
+  public List<String> getAllFilesFolders() {
+    List<String> folders = new ArrayList<>(sequenceFileFolders);
+    folders.addAll(unsequenceFileFolders);
+    return folders;
+  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
index 5101b841ce..3aeb349605 100755
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
@@ -313,6 +313,27 @@ public class DataRegion {
           "Skip recovering data region {}[{}] when consensus protocol is ratis and storage engine is not ready.",
           logicalStorageGroupName,
           dataRegionId);
+      for (String fileFolder : DirectoryManager.getInstance().getAllFilesFolders()) {
+        File dataRegionFolder =
+            fsFactory.getFile(fileFolder, logicalStorageGroupName + File.separator + dataRegionId);
+        if (dataRegionFolder.exists()) {
+          File[] timePartitions = dataRegionFolder.listFiles();
+          if (timePartitions != null) {
+            for (File timePartition : timePartitions) {
+              try {
+                FileUtils.forceDelete(timePartition);
+              } catch (IOException e) {
+                logger.error(
+                    "Exception occurs when deleting time partition directory {} for {}-{}",
+                    timePartitions,
+                    logicalStorageGroupName,
+                    dataRegionId,
+                    e);
+              }
+            }
+          }
+        }
+      }
     } else {
       recover();
     }
@@ -1660,9 +1681,7 @@ public class DataRegion {
       // normally, mergingModification is just need to be closed by after a merge task is finished.
       // we close it here just for IT test.
       closeAllResources();
-      List<String> folder = DirectoryManager.getInstance().getAllSequenceFileFolders();
-      folder.addAll(DirectoryManager.getInstance().getAllUnSequenceFileFolders());
-      deleteAllSGFolders(folder);
+      deleteAllSGFolders(DirectoryManager.getInstance().getAllFilesFolders());
 
       this.workSequenceTsFileProcessors.clear();
       this.workUnsequenceTsFileProcessors.clear();