This is an automated email from the ASF dual-hosted git repository.
qiaojialin pushed a commit to branch rel/0.10
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.10 by this push:
new 7dbffe1 [To rel/0.10] Fix some upgrade bugs (#3099)
7dbffe1 is described below
commit 7dbffe1dec41d84ebda867be5805c7ae38a8d715
Author: Haonan <[email protected]>
AuthorDate: Thu Apr 29 12:29:44 2021 +0800
[To rel/0.10] Fix some upgrade bugs (#3099)
---
.../org/apache/iotdb/db/conf/IoTDBConfigCheck.java | 19 +++++++++++++++++++
.../db/engine/storagegroup/StorageGroupProcessor.java | 4 ++++
.../apache/iotdb/db/engine/upgrade/UpgradeTask.java | 4 ++++
.../org/apache/iotdb/db/service/UpgradeSevice.java | 6 +-----
4 files changed, 28 insertions(+), 5 deletions(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java
b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java
index c9cf5b7..2c5d364 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfigCheck.java
@@ -339,10 +339,29 @@ public class IoTDBConfigCheck {
+ " before upgrading to V0.10");
System.exit(-1);
}
+ for (File tsfile : tsfiles) {
+ checkAndRenameTsFileWithoutMergeCount(tsfile);
+ }
+ for (File resource : resources) {
+ checkAndRenameTsFileWithoutMergeCount(resource);
+ }
}
}
}
+ // rename the file from v0.8 like 1615179626920-72822.tsfile to
1615179626920-72822-0.tsfile
+ private void checkAndRenameTsFileWithoutMergeCount(File file) {
+ String[] name = file.getName().split(IoTDBConstant.TSFILE_NAME_SEPARATOR);
+ if (name.length == 2) {
+ file.renameTo(
+ FSFactoryProducer.getFSFactory()
+ .getFile(
+ file.getParentFile(),
+ file.getName().substring(0, file.getName().indexOf("."))
+ + "-0"
+ +
file.getName().substring(file.getName().indexOf("."))));
+ }
+ }
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
index 15213dd..28cf948 100755
---
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
@@ -1469,6 +1469,8 @@ public class StorageGroupProcessor {
}
public void upgrade() {
+ insertLock.writeLock().lock();
+ mergeLock.writeLock().lock();
for (TsFileResource seqTsFileResource : upgradeSeqFileList) {
seqTsFileResource.setSeq(true);
seqTsFileResource.setUpgradeTsFileResourceCallBack(this::upgradeTsFileResourceCallBack);
@@ -1479,6 +1481,8 @@ public class StorageGroupProcessor {
unseqTsFileResource.setUpgradeTsFileResourceCallBack(this::upgradeTsFileResourceCallBack);
unseqTsFileResource.doUpgrade();
}
+ mergeLock.writeLock().unlock();
+ insertLock.writeLock().unlock();
}
private void upgradeTsFileResourceCallBack(TsFileResource tsFileResource) {
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 e64cb0a..ee2ff95 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.IoTDBConstant;
import org.apache.iotdb.db.engine.modification.ModificationFile;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
import org.apache.iotdb.db.service.UpgradeSevice;
@@ -32,6 +33,7 @@ import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
public class UpgradeTask extends WrappedRunnable {
@@ -77,6 +79,8 @@ public class UpgradeTask extends WrappedRunnable {
FSFactoryProducer.getFSFactory().getFile(partitionDir,
upgradedFile.getName()
+ ModificationFile.FILE_SUFFIX).toPath());
}
+ long version =
Long.parseLong(upgradedFile.getName().split(IoTDBConstant.TSFILE_NAME_SEPARATOR)[1]);
+
upgradedResource.setHistoricalVersions(Collections.singleton(version));
upgradedResource.serialize();
// delete tmp partition folder when it is empty
if (upgradedFile.getParentFile().isDirectory()
diff --git
a/server/src/main/java/org/apache/iotdb/db/service/UpgradeSevice.java
b/server/src/main/java/org/apache/iotdb/db/service/UpgradeSevice.java
index b7d1b89..465a03f 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/UpgradeSevice.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/UpgradeSevice.java
@@ -70,12 +70,8 @@ public class UpgradeSevice implements IService {
UpgradeLog.closeLogWriter();
if (upgradeThreadPool != null) {
upgradeThreadPool.shutdownNow();
- logger.info("Waiting for upgrade task pool to shut down");
- while (!upgradeThreadPool.isTerminated()) {
- // wait
- }
- upgradeThreadPool = null;
logger.info("Upgrade service stopped");
+ upgradeThreadPool = null;
}
}