This is an automated email from the ASF dual-hosted git repository.

haonan pushed a commit to branch rel/0.13
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rel/0.13 by this push:
     new f1c3cfa109 [To rel/0.13] Accelerate restart process (#7477)
f1c3cfa109 is described below

commit f1c3cfa109027a10217399b03017e9a16540f171
Author: Jackie Tien <[email protected]>
AuthorDate: Thu Sep 29 09:29:36 2022 +0800

    [To rel/0.13] Accelerate restart process (#7477)
---
 .../storagegroup/VirtualStorageGroupProcessor.java | 29 +++++++++++++---------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
 
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
index 997a61467e..e0bac29972 100755
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
@@ -540,8 +540,18 @@ public class VirtualStorageGroupProcessor {
       throw new StorageGroupProcessorException(e);
     }
 
-    List<TsFileResource> seqTsFileResources = 
tsFileManager.getTsFileList(true);
-    for (TsFileResource resource : seqTsFileResources) {
+    // recover and start timed compaction thread
+    initCompaction();
+
+    logger.info(
+        "The virtual storage group {}[{}] is recovered successfully",
+        logicalStorageGroupName,
+        virtualStorageGroupId);
+  }
+
+  private void updateLastFlushTime(TsFileResource resource, boolean isSeq) {
+    //  only update flush time when it is a seq file
+    if (isSeq) {
       long timePartitionId = resource.getTimePartition();
       Map<String, Long> endTimeMap = new HashMap<>();
       for (String deviceId : resource.getDevices()) {
@@ -552,14 +562,6 @@ public class VirtualStorageGroupProcessor {
       lastFlushTimeManager.setMultiDeviceFlushedTime(timePartitionId, 
endTimeMap);
       lastFlushTimeManager.setMultiDeviceGlobalFlushedTime(endTimeMap);
     }
-
-    // recover and start timed compaction thread
-    initCompaction();
-
-    logger.info(
-        "The virtual storage group {}[{}] is recovered successfully",
-        logicalStorageGroupName,
-        virtualStorageGroupId);
   }
 
   private void initCompaction() {
@@ -768,6 +770,7 @@ public class VirtualStorageGroupProcessor {
           } else {
             tsFileResource.setStatus(TsFileResourceStatus.CLOSED);
             tsFileManager.add(tsFileResource, isSeq);
+            updateLastFlushTime(tsFileResource, isSeq);
             tsFileResourceManager.registerSealedTsFileResource(tsFileResource);
           }
           continue;
@@ -779,6 +782,8 @@ public class VirtualStorageGroupProcessor {
         if (i != tsFiles.size() - 1 || writer == null || !writer.canWrite()) {
           // not the last file or cannot write, just close it
           tsFileResource.close();
+          tsFileManager.add(tsFileResource, isSeq);
+          updateLastFlushTime(tsFileResource, isSeq);
           tsFileResourceManager.registerSealedTsFileResource(tsFileResource);
         } else if (writer.canWrite()) {
           // the last file is not closed, continue writing to in
@@ -833,12 +838,12 @@ public class VirtualStorageGroupProcessor {
             }
             
tsFileProcessor.getTsFileProcessorInfo().addTSPMemCost(chunkMetadataSize);
           }
+          tsFileManager.add(tsFileResource, isSeq);
+          updateLastFlushTime(tsFileResource, isSeq);
         }
-        tsFileManager.add(tsFileResource, isSeq);
       } catch (StorageGroupProcessorException | IOException e) {
         logger.warn(
             "Skip TsFile: {} because of error in recover: ", 
tsFileResource.getTsFilePath(), e);
-        continue;
       } finally {
         if (writer != null) {
           writer.close();

Reply via email to