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;
/**