This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch cp_upgrade_commit in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 41acd96b0b83ef4017bc7764d8b7dfb8812fc12a Author: Haonan <[email protected]> AuthorDate: Fri May 14 11:36:01 2021 +0800 [To rel/0.12] Fix removing tmp folders logic in upgrade tool (#3186) --- .../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()); - } } }
