You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ji...@apache.org on 2019/06/22 11:25:36 UTC

[incubator-iotdb] branch feature_async_close_tsfile updated: complete recover in FileNodeV2

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

jiangtian pushed a commit to branch feature_async_close_tsfile
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git


The following commit(s) were added to refs/heads/feature_async_close_tsfile by this push:
     new 5e3b4fd  complete recover in FileNodeV2
5e3b4fd is described below

commit 5e3b4fd9ad9efbc0e0ac37ea1fc34e2275a3dc12
Author: 江天 <jt...@163.com>
AuthorDate: Sat Jun 22 19:23:30 2019 +0800

    complete recover in FileNodeV2
---
 .../db/engine/filenodeV2/FileNodeProcessorV2.java  | 45 ++++++++++++++--------
 1 file changed, 29 insertions(+), 16 deletions(-)

diff --git a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenodeV2/FileNodeProcessorV2.java b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenodeV2/FileNodeProcessorV2.java
index f958c1c..379c4f6 100755
--- a/iotdb/src/main/java/org/apache/iotdb/db/engine/filenodeV2/FileNodeProcessorV2.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/engine/filenodeV2/FileNodeProcessorV2.java
@@ -22,7 +22,7 @@ import java.io.File;
 import java.io.IOException;
 import java.nio.file.Paths;
 import java.util.ArrayList;
-import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -43,6 +43,7 @@ import org.apache.iotdb.db.exception.ProcessorException;
 import org.apache.iotdb.db.metadata.MManager;
 import org.apache.iotdb.db.qp.physical.crud.InsertPlan;
 import org.apache.iotdb.db.writelog.recover.SeqTsFileRecoverPerformer;
+import org.apache.iotdb.db.writelog.recover.UnSeqTsFileRecoverPerformer;
 import org.apache.iotdb.tsfile.file.metadata.ChunkMetaData;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -101,7 +102,7 @@ public class FileNodeProcessorV2 {
     lock = new ReentrantReadWriteLock();
     closeFileNodeCondition = lock.writeLock().newCondition();
 
-    recovery();
+    recover();
 
     /**
      * version controller
@@ -122,8 +123,8 @@ public class FileNodeProcessorV2 {
     this.fileSchema = constructFileSchema(storageGroupName);
   }
 
-  private void recovery() throws ProcessorException {
-    List<String> tsfiles = new ArrayList<>();
+  private void recover() throws ProcessorException {
+    List<String> tsFiles = new ArrayList<>();
     List<String> fileFolders = directoryManager.getAllTsFileFolders();
     for (String baseDir: fileFolders) {
       File fileFolder = new File(baseDir, storageGroupName);
@@ -131,31 +132,43 @@ public class FileNodeProcessorV2 {
         continue;
       }
       for (File tsfile: fileFolder.listFiles()) {
-        tsfiles.add(tsfile.getPath());
+        tsFiles.add(tsfile.getPath());
       }
     }
+    recoverSeqFiles(tsFiles);
 
-//    Collections.sort(tsfiles, );
-
-    for (String tsfile: tsfiles) {
-      TsFileResourceV2 tsFileResource = new TsFileResourceV2(new File(tsfile));
-      SeqTsFileRecoverPerformer recoverPerformer = new SeqTsFileRecoverPerformer(storageGroupName + "-", fileSchema, versionController, tsFileResource);
-      recoverPerformer.recover();
-    }
-
-    tsfiles.clear();
+    tsFiles.clear();
     String unseqFileFolder = IoTDBDescriptor.getInstance().getConfig().getOverflowDataDir();
     File fileFolder = new File(unseqFileFolder, storageGroupName);
     if (!fileFolder.exists()) {
       return;
     }
     for (File unseqFile: fileFolder.listFiles()) {
-      tsfiles.add(unseqFile.getPath());
+      tsFiles.add(unseqFile.getPath());
     }
+    recoverUnseqFiles(tsFiles);
+  }
 
-
+  private void recoverSeqFiles(List<String> tsfiles) throws ProcessorException {
+    tsfiles.sort(Comparator.comparingInt(file -> Integer.parseInt(file.split("-")[1])));
+    for (String tsfile: tsfiles) {
+      TsFileResourceV2 tsFileResource = new TsFileResourceV2(new File(tsfile));
+      sequenceFileList.add(tsFileResource);
+      SeqTsFileRecoverPerformer recoverPerformer = new SeqTsFileRecoverPerformer(storageGroupName + "-", fileSchema, versionController, tsFileResource);
+      recoverPerformer.recover();
+    }
   }
 
+  private void recoverUnseqFiles(List<String> tsfiles) throws ProcessorException {
+    tsfiles.sort(Comparator.comparingInt(file -> Integer.parseInt(file.split("-")[1])));
+    for (String tsfile: tsfiles) {
+      TsFileResourceV2 tsFileResource = new TsFileResourceV2(new File(tsfile));
+      unSequenceFileList.add(tsFileResource);
+      UnSeqTsFileRecoverPerformer recoverPerformer = new UnSeqTsFileRecoverPerformer(storageGroupName + "-", fileSchema,
+          versionController, tsFileResource);
+      recoverPerformer.recover();
+    }
+  }
 
 
   private FileSchema constructFileSchema(String storageGroupName) {