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;
     }
   }
 

Reply via email to