You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by su...@apache.org on 2019/06/21 10:50:04 UTC

[incubator-iotdb] branch feature_async_close_tsfile updated: add comment for bwf read

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

suyue 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 7c03176  add comment for bwf read
     new e04ee69  Merge branch 'feature_async_close_tsfile' of https://github.com/apache/incubator-iotdb into feature_async_close_tsfile
7c03176 is described below

commit 7c031765981a9a414310553a9495eed7aabbb164
Author: suyue <23...@qq.com>
AuthorDate: Fri Jun 21 18:49:19 2019 +0800

    add comment for bwf read
---
 .../iotdb/db/query/reader/AllDataReader.java       |  3 +++
 .../FileSeriesReaderAdapter.java}                  |  9 +++++---
 .../SeriesReaderByTimestampAdapter.java}           |  9 +++++---
 .../db/query/reader/sequence/IterateReader.java    |  3 +++
 .../sequence/SequenceDataReaderByTimestampV2.java  | 20 +++++++++++-----
 .../reader/sequence/SequenceDataReaderV2.java      | 27 +++++++++++++++++++---
 .../reader/sequence/UnSealedTsFileReaderV2.java    |  5 ++--
 .../UnSealedTsFilesReaderByTimestampV2.java        | 14 +++++++++++
 8 files changed, 73 insertions(+), 17 deletions(-)

diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/AllDataReader.java b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/AllDataReader.java
index 6eaa4bb..b50f2a0 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/AllDataReader.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/AllDataReader.java
@@ -24,6 +24,9 @@ import org.apache.iotdb.db.utils.TimeValuePair;
 import org.apache.iotdb.db.utils.TimeValuePairUtils;
 import org.apache.iotdb.tsfile.read.common.BatchData;
 
+/**
+ * include all data of a series: sequence data and unsequence data.
+ */
 public class AllDataReader implements IPointReader {
 
   private IBatchReader batchReader;
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/FileSeriesIAggregateReader.java b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/adapter/FileSeriesReaderAdapter.java
similarity index 87%
rename from iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/FileSeriesIAggregateReader.java
rename to iotdb/src/main/java/org/apache/iotdb/db/query/reader/adapter/FileSeriesReaderAdapter.java
index 768eeb8..f3d0a58 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/FileSeriesIAggregateReader.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/adapter/FileSeriesReaderAdapter.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.db.query.reader.sequence;
+package org.apache.iotdb.db.query.reader.adapter;
 
 import java.io.IOException;
 import org.apache.iotdb.db.query.reader.IAggregateReader;
@@ -24,11 +24,14 @@ import org.apache.iotdb.tsfile.file.header.PageHeader;
 import org.apache.iotdb.tsfile.read.common.BatchData;
 import org.apache.iotdb.tsfile.read.reader.series.FileSeriesReader;
 
-public class FileSeriesIAggregateReader implements IAggregateReader {
+/**
+ *  FileSeriesReader to IAggregateReader adapter.
+ */
+public class FileSeriesReaderAdapter implements IAggregateReader {
 
   private FileSeriesReader fileSeriesReader;
 
-  public FileSeriesIAggregateReader(FileSeriesReader fileSeriesReader){
+  public FileSeriesReaderAdapter(FileSeriesReader fileSeriesReader){
     this.fileSeriesReader = fileSeriesReader;
   }
 
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/FileSeriesByTimestampIAggregateReader.java b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/adapter/SeriesReaderByTimestampAdapter.java
similarity index 82%
rename from iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/FileSeriesByTimestampIAggregateReader.java
rename to iotdb/src/main/java/org/apache/iotdb/db/query/reader/adapter/SeriesReaderByTimestampAdapter.java
index 810d649..0409d4a 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/FileSeriesByTimestampIAggregateReader.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/adapter/SeriesReaderByTimestampAdapter.java
@@ -17,17 +17,20 @@
  * under the License.
  */
 
-package org.apache.iotdb.db.query.reader.sequence;
+package org.apache.iotdb.db.query.reader.adapter;
 
 import java.io.IOException;
 import org.apache.iotdb.db.query.reader.merge.EngineReaderByTimeStamp;
 import org.apache.iotdb.tsfile.read.reader.series.SeriesReaderByTimestamp;
 
-public class FileSeriesByTimestampIAggregateReader implements EngineReaderByTimeStamp {
+/**
+ * SeriesReaderByTimestamp to EngineReaderByTimeStamp adapter.
+ */
+public class SeriesReaderByTimestampAdapter implements EngineReaderByTimeStamp {
 
   private SeriesReaderByTimestamp seriesReaderByTimestamp;
 
-  public FileSeriesByTimestampIAggregateReader(SeriesReaderByTimestamp seriesReaderByTimestamp) {
+  public SeriesReaderByTimestampAdapter(SeriesReaderByTimestamp seriesReaderByTimestamp) {
     this.seriesReaderByTimestamp = seriesReaderByTimestamp;
   }
 
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/IterateReader.java b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/IterateReader.java
index 23da44f..d15e3a4 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/IterateReader.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/IterateReader.java
@@ -26,6 +26,9 @@ import org.apache.iotdb.db.query.reader.IBatchReader;
 import org.apache.iotdb.tsfile.file.header.PageHeader;
 import org.apache.iotdb.tsfile.read.common.BatchData;
 
+/**
+ * get data sequentially from the reader list.
+ */
 public class IterateReader implements IAggregateReader {
 
   protected List<IAggregateReader> seriesReaders;
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/SequenceDataReaderByTimestampV2.java b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/SequenceDataReaderByTimestampV2.java
index d3abac2..d2b0051 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/SequenceDataReaderByTimestampV2.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/SequenceDataReaderByTimestampV2.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.db.engine.filenodeV2.TsFileResourceV2;
 import org.apache.iotdb.db.engine.modification.Modification;
 import org.apache.iotdb.db.query.context.QueryContext;
 import org.apache.iotdb.db.query.control.FileReaderManager;
+import org.apache.iotdb.db.query.reader.adapter.SeriesReaderByTimestampAdapter;
 import org.apache.iotdb.db.query.reader.merge.EngineReaderByTimeStamp;
 import org.apache.iotdb.db.utils.QueryUtils;
 import org.apache.iotdb.tsfile.file.metadata.ChunkMetaData;
@@ -35,6 +36,10 @@ import org.apache.iotdb.tsfile.read.controller.ChunkLoaderImpl;
 import org.apache.iotdb.tsfile.read.controller.MetadataQuerierByFileImpl;
 import org.apache.iotdb.tsfile.read.reader.series.SeriesReaderByTimestamp;
 
+/**
+ * EngineReaderByTimeStamp of data in: 1) sealed tsfile. 2) unsealed tsfile, which include data in disk of
+ * unsealed file and in memtables that will be flushing to unsealed tsfile.
+ */
 public class SequenceDataReaderByTimestampV2 implements EngineReaderByTimeStamp {
 
   protected Path seriesPath;
@@ -44,7 +49,7 @@ public class SequenceDataReaderByTimestampV2 implements EngineReaderByTimeStamp
   private QueryContext context;
 
   /**
-   * init with seriesPath and sealedTsFiles.
+   * init with seriesPath and tsfile list which include sealed tsfile and unseadled tsfile.
    */
   public SequenceDataReaderByTimestampV2(Path seriesPath,
       List<TsFileResourceV2> tsFileResourceV2List,
@@ -61,6 +66,7 @@ public class SequenceDataReaderByTimestampV2 implements EngineReaderByTimeStamp
     Object value = null;
     if (seriesReader != null) {
       value = seriesReader.getValueInTimestamp(timestamp);
+      // if get value or no value in this timestamp, return.
       if (value != null || seriesReader.hasNext()) {
         return value;
       }
@@ -98,13 +104,15 @@ public class SequenceDataReaderByTimestampV2 implements EngineReaderByTimeStamp
     while (nextIntervalFileIndex < tsFileResourceV2List.size()) {
       TsFileResourceV2 tsFile = tsFileResourceV2List.get(nextIntervalFileIndex);
       nextIntervalFileIndex++;
+      // init unsealed tsfile.
       if (!tsFile.isClosed()) {
-        initUnSealedTsFileReader(tsFile, context);
-        break;
+        initUnSealedTsFileReader(tsFile);
+        return;
       }
+      // init sealed tsfile.
       if (singleTsFileSatisfied(tsFile, timestamp)) {
         initSealedTsFileReader(tsFile, context);
-        break;
+        return;
       }
     }
   }
@@ -119,7 +127,7 @@ public class SequenceDataReaderByTimestampV2 implements EngineReaderByTimeStamp
     return true;
   }
 
-  private void initUnSealedTsFileReader(TsFileResourceV2 tsFile, QueryContext context)
+  private void initUnSealedTsFileReader(TsFileResourceV2 tsFile)
       throws IOException {
     seriesReader = new UnSealedTsFilesReaderByTimestampV2(tsFile);
   }
@@ -141,7 +149,7 @@ public class SequenceDataReaderByTimestampV2 implements EngineReaderByTimeStamp
     }
     ChunkLoader chunkLoader = new ChunkLoaderImpl(tsFileReader);
 
-    seriesReader = new FileSeriesByTimestampIAggregateReader(
+    seriesReader = new SeriesReaderByTimestampAdapter(
         new SeriesReaderByTimestamp(chunkLoader, metaDataList));
   }
 }
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/SequenceDataReaderV2.java b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/SequenceDataReaderV2.java
index c4e2652..b97d40d 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/SequenceDataReaderV2.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/SequenceDataReaderV2.java
@@ -27,6 +27,7 @@ import org.apache.iotdb.db.engine.querycontext.GlobalSortedSeriesDataSourceV2;
 import org.apache.iotdb.db.query.context.QueryContext;
 import org.apache.iotdb.db.query.control.FileReaderManager;
 import org.apache.iotdb.db.query.reader.IAggregateReader;
+import org.apache.iotdb.db.query.reader.adapter.FileSeriesReaderAdapter;
 import org.apache.iotdb.db.utils.QueryUtils;
 import org.apache.iotdb.tsfile.file.metadata.ChunkMetaData;
 import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
@@ -39,9 +40,17 @@ import org.apache.iotdb.tsfile.read.reader.series.FileSeriesReader;
 import org.apache.iotdb.tsfile.read.reader.series.FileSeriesReaderWithFilter;
 import org.apache.iotdb.tsfile.read.reader.series.FileSeriesReaderWithoutFilter;
 
+/**
+ * batch reader of data in: 1) sealed tsfile. 2) unsealed tsfile, which include data in disk of
+ * unsealed file and in memtables that will be flushing to unsealed tsfile.
+ */
 public class SequenceDataReaderV2 extends IterateReader {
 
   private Path seriesPath;
+  /**
+   * Is reverse the sequence of tsfiles(include sealed and unsealed tsfile) and chunks in tsfiles.
+   * True-traverse chunks from behind forward. False-traverse chunks from front to back.
+   */
   private boolean enableReverse;
 
   /**
@@ -58,7 +67,9 @@ public class SequenceDataReaderV2 extends IterateReader {
     super();
     this.seriesPath = sources.getSeriesPath();
     this.enableReverse = isReverse;
-
+    if (isReverse) {
+      Collections.reverse(sources.getQueryTsFiles());
+    }
     for (TsFileResourceV2 tsFileResource : sources.getQueryTsFiles()) {
       if (tsFileResource.isClosed()) {
         constructSealedTsFileReader(tsFileResource, filter, context, seriesReaders);
@@ -70,21 +81,31 @@ public class SequenceDataReaderV2 extends IterateReader {
 
   }
 
+  /**
+   * traverse chunks from front to back.
+   */
   public SequenceDataReaderV2(GlobalSortedSeriesDataSourceV2 sources, Filter filter,
       QueryContext context) throws IOException {
     this(sources, filter, context, false);
 
   }
+
   private void constructSealedTsFileReader(TsFileResourceV2 tsFileResource, Filter filter,
       QueryContext context, List<IAggregateReader> readerList)
       throws IOException {
     if (singleTsFileSatisfied(tsFileResource, filter)) {
       readerList.add(
-          new FileSeriesIAggregateReader(initSingleTsFileReader(tsFileResource, filter, context)));
+          new FileSeriesReaderAdapter(initSealedTsFileReader(tsFileResource, filter, context)));
     }
 
   }
 
+  /**
+   * check if skip the tsfile.
+   *
+   * @param tsfile tsfile resource.
+   * @param filter filter condition. If no filter, the filed is null.
+   */
   private boolean singleTsFileSatisfied(TsFileResourceV2 tsfile, Filter filter) {
 
     if (filter == null) {
@@ -96,7 +117,7 @@ public class SequenceDataReaderV2 extends IterateReader {
     return filter.satisfyStartEndTime(startTime, endTime);
   }
 
-  private FileSeriesReader initSingleTsFileReader(TsFileResourceV2 tsfile, Filter filter,
+  private FileSeriesReader initSealedTsFileReader(TsFileResourceV2 tsfile, Filter filter,
       QueryContext context)
       throws IOException {
 
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/UnSealedTsFileReaderV2.java b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/UnSealedTsFileReaderV2.java
index d9fdadb..c4b337f 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/UnSealedTsFileReaderV2.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/UnSealedTsFileReaderV2.java
@@ -24,6 +24,7 @@ import java.util.Collections;
 import java.util.List;
 import org.apache.iotdb.db.engine.filenodeV2.TsFileResourceV2;
 import org.apache.iotdb.db.query.control.FileReaderManager;
+import org.apache.iotdb.db.query.reader.adapter.FileSeriesReaderAdapter;
 import org.apache.iotdb.db.query.reader.mem.MemChunkReader;
 import org.apache.iotdb.tsfile.file.metadata.ChunkMetaData;
 import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
@@ -72,9 +73,9 @@ public class UnSealedTsFileReaderV2 extends IterateReader {
     MemChunkReader memChunkReader = new MemChunkReader(unsealedTsFile.getReadOnlyMemChunk(), filter);
     if (isReverse) {
       seriesReaders.add(memChunkReader);
-      seriesReaders.add(new FileSeriesIAggregateReader(unSealedReader));
+      seriesReaders.add(new FileSeriesReaderAdapter(unSealedReader));
     } else {
-      seriesReaders.add(new FileSeriesIAggregateReader(unSealedReader));
+      seriesReaders.add(new FileSeriesReaderAdapter(unSealedReader));
       seriesReaders.add(memChunkReader);
 
     }
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/UnSealedTsFilesReaderByTimestampV2.java b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/UnSealedTsFilesReaderByTimestampV2.java
index 3a93346..d4d8ce7 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/UnSealedTsFilesReaderByTimestampV2.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/UnSealedTsFilesReaderByTimestampV2.java
@@ -30,11 +30,25 @@ import org.apache.iotdb.tsfile.read.controller.ChunkLoader;
 import org.apache.iotdb.tsfile.read.controller.ChunkLoaderImpl;
 import org.apache.iotdb.tsfile.read.reader.series.SeriesReaderByTimestamp;
 
+/**
+ * include data in one closing bufferWriteProcessfor or working bufferWriteProcessfor: 1) the data
+ * in unseal tsfile part which has been flushed to disk 2) the data in flushing memtable list
+ */
 public class UnSealedTsFilesReaderByTimestampV2 implements EngineReaderByTimeStamp {
 
   protected Path seriesPath;
+  /**
+   * reader the data of unseal tsfile part which has been flushed to disk
+   */
   private SeriesReaderByTimestamp unSealedReader;
+  /**
+   * reader of the data in flushing memtable list
+   */
   private EngineReaderByTimeStamp memSeriesReader;
+  /**
+   * whether unSealedReader has been used. True if current reader is memSeriesReader,
+   * false if current reader is unSealedReader.
+   */
   private boolean unSealedReaderEnded;
 
   /**