This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch upgrade_bug_10 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit e8011eb4f5236188318b97b9cef4ac23fdef73c4 Author: HTHou <[email protected]> AuthorDate: Thu Apr 29 11:43:00 2021 +0800 [To rel/0.10] Fix some upgrade bugs --- .../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; } }
