You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2021/01/21 08:19:50 UTC
[iotdb] branch master updated: fix some upgrade recover bugs (#2536)
This is an automated email from the ASF dual-hosted git repository.
jackietien 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 7a393ef fix some upgrade recover bugs (#2536)
7a393ef is described below
commit 7a393ef2bf2b2a567ebef2b9430a0b56e9cd9f6e
Author: Haonan <hh...@outlook.com>
AuthorDate: Thu Jan 21 16:19:25 2021 +0800
fix some upgrade recover bugs (#2536)
fix some upgrade recover bugs
---
.../apache/iotdb/db/engine/upgrade/UpgradeTask.java | 3 ++-
.../java/org/apache/iotdb/db/utils/UpgradeUtils.java | 18 +++++++++++++-----
2 files changed, 15 insertions(+), 6 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 deb8e27..3a977df 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
@@ -100,7 +100,8 @@ public class UpgradeTask extends WrappedRunnable {
File upgradeFolder = upgradeResource.getTsFile().getParentFile();
for (File tempPartitionDir : upgradeFolder.listFiles()) {
if (tempPartitionDir.isDirectory() &&
- fsFactory.getFile(tempPartitionDir, upgradeResource.getTsFile().getName()).exists()) {
+ fsFactory.getFile(tempPartitionDir, upgradeResource.getTsFile().getName()
+ + TsFileResource.RESOURCE_SUFFIX).exists()) {
TsFileResource resource = new TsFileResource(
fsFactory.getFile(tempPartitionDir, upgradeResource.getTsFile().getName()));
resource.deserialize();
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 e16a118..da9bddd 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
@@ -101,11 +101,13 @@ public class UpgradeUtils {
partitionDir.mkdir();
}
// move upgraded TsFile
- fsFactory.moveFile(upgradedFile,
+ if (upgradedFile.exists()) {
+ fsFactory.moveFile(upgradedFile,
fsFactory.getFile(partitionDir, upgradedFile.getName()));
- // delete generated temp resource
- Files.delete(fsFactory
- .getFile(upgradedResource.getTsFile().toPath() + TsFileResource.RESOURCE_SUFFIX).toPath());
+ }
+ // get temp resource
+ File tempResourceFile = fsFactory
+ .getFile(upgradedResource.getTsFile().toPath() + TsFileResource.RESOURCE_SUFFIX);
// move upgraded mods file
File newModsFile = fsFactory
.getFile(upgradedResource.getTsFile().toPath() + ModificationFile.FILE_SUFFIX);
@@ -116,10 +118,13 @@ public class UpgradeUtils {
// re-serialize upgraded resource to correct place
upgradedResource.setFile(
fsFactory.getFile(partitionDir, upgradedFile.getName()));
- if (newModsFile.exists()) {
+ if (fsFactory.getFile(partitionDir, newModsFile.getName()).exists()) {
upgradedResource.getModFile();
}
+ upgradedResource.setClosed(true);
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) {
@@ -161,6 +166,9 @@ public class UpgradeUtils {
File upgradeDir = FSFactoryProducer.getFSFactory().getFile(key)
.getParentFile();
File[] partitionDirs = upgradeDir.listFiles();
+ if (partitionDirs == null) {
+ return;
+ }
for (File partitionDir : partitionDirs) {
if (partitionDir.isDirectory()) {
File[] generatedFiles = partitionDir.listFiles();