You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2021/05/14 03:33:27 UTC

[iotdb] 01/01: [To rel/0.12] Fix removing tmp folders logic in upgrade tool

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

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

commit 17f66d3a7ca84e3e9a00dc4e68d3d510a988908f
Author: HTHou <hh...@outlook.com>
AuthorDate: Fri May 14 11:32:19 2021 +0800

    [To rel/0.12] Fix removing tmp folders logic in upgrade tool
---
 .../iotdb/db/engine/upgrade/UpgradeTask.java       | 40 ++++++++++++++++++++++
 .../org/apache/iotdb/db/utils/UpgradeUtils.java    | 10 ------
 2 files changed, 40 insertions(+), 10 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/engine/upgrade/UpgradeTask.java b/server/src/main/java/org/apache/iotdb/db/engine/upgrade/UpgradeTask.java
index a2e8357..3d4aa76 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/upgrade/UpgradeTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/upgrade/UpgradeTask.java
@@ -19,6 +19,7 @@
 package org.apache.iotdb.db.engine.upgrade;
 
 import org.apache.iotdb.db.concurrent.WrappedRunnable;
+import org.apache.iotdb.db.conf.directories.DirectoryManager;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.service.UpgradeSevice;
 import org.apache.iotdb.db.tools.upgrade.TsFileOnlineUpgradeTool;
@@ -32,6 +33,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.List;
 
@@ -72,6 +74,9 @@ public class UpgradeTask extends WrappedRunnable {
           oldTsfilePath,
           UpgradeSevice.getCntUpgradeFileNum());
       if (UpgradeSevice.getCntUpgradeFileNum() == 0) {
+        logger.info("Start delete empty tmp folders");
+        clearTmpFolders(DirectoryManager.getInstance().getAllSequenceFileFolders());
+        clearTmpFolders(DirectoryManager.getInstance().getAllUnSequenceFileFolders());
         UpgradeSevice.getINSTANCE().stop();
         logger.info("All files upgraded successfully! ");
       }
@@ -126,4 +131,39 @@ public class UpgradeTask extends WrappedRunnable {
     }
     return upgradedResources;
   }
+
+  private void clearTmpFolders(List<String> folders) {
+    for (String baseDir : folders) {
+      File fileFolder = fsFactory.getFile(baseDir);
+      if (!fileFolder.isDirectory()) {
+        continue;
+      }
+      for (File storageGroup : fileFolder.listFiles()) {
+        if (!storageGroup.isDirectory()) {
+          continue;
+        }
+        File virtualStorageGroupDir = fsFactory.getFile(storageGroup, "0");
+        File upgradeDir = fsFactory.getFile(virtualStorageGroupDir, "upgrade");
+
+        File[] tmpPartitionDirList = upgradeDir.listFiles();
+        for (File tmpPartitionDir : tmpPartitionDirList) {
+          if (tmpPartitionDir.isDirectory()) {
+            try {
+              Files.delete(tmpPartitionDir.toPath());
+            } catch (IOException e) {
+              logger.error("Delete tmpPartitionDir {} failed", tmpPartitionDir);
+            }
+          }
+        }
+        // delete upgrade folder when it is empty
+        if (upgradeDir.isDirectory()) {
+          try {
+            Files.delete(upgradeDir.toPath());
+          } catch (IOException e) {
+            logger.error("Delete tmpUpgradeDir {} failed", upgradeDir);
+          }
+        }
+      }
+    }
+  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/UpgradeUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/UpgradeUtils.java
index 87dd910..f8e2b82 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/UpgradeUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/UpgradeUtils.java
@@ -122,16 +122,6 @@ public class UpgradeUtils {
       upgradedResource.serialize();
       // delete generated temp resource file
       Files.delete(tempResourceFile.toPath());
-      // delete tmp partition folder when it is empty
-      File tmpPartitionDir = upgradedFile.getParentFile();
-      if (tmpPartitionDir.isDirectory() && tmpPartitionDir.listFiles().length == 0) {
-        Files.delete(tmpPartitionDir.toPath());
-      }
-      // delete upgrade folder when it is empty
-      File upgradeDir = tmpPartitionDir.getParentFile();
-      if (upgradeDir.isDirectory() && upgradeDir.listFiles().length == 0) {
-        Files.delete(upgradeDir.toPath());
-      }
     }
   }