Skip to content

Commit

Permalink
Merge 6797b44 into a5eba32
Browse files Browse the repository at this point in the history
  • Loading branch information
JackieTien97 committed Apr 2, 2020
2 parents a5eba32 + 6797b44 commit 48212c6
Show file tree
Hide file tree
Showing 19 changed files with 74 additions and 57 deletions.
5 changes: 0 additions & 5 deletions pom.xml
Expand Up @@ -44,21 +44,17 @@
<url>ssh://git@github.com:apache/incubator-iotdb.git</url>
<tag>rel/0.10</tag>
</scm>


<!-- Only configure the site distribution as the rest is handled by the apache parent -->
<distributionManagement>
<site>
<id>apache.website</id>
<url>scm:git:https://gitbox.apache.org/repos/asf/incubator-iotdb-website.git</url>
</site>
</distributionManagement>

<issueManagement>
<system>Jira</system>
<url>https://issues.apache.org/jira/browse/iotdb</url>
</issueManagement>

<mailingLists>
<mailingList>
<name>Apache IoTDB Developer List</name>
Expand All @@ -82,7 +78,6 @@
<archive>http://mail-archives.apache.org/mod_mbox/iotdb-notifications/</archive>
</mailingList>
</mailingLists>

<modules>
<module>tsfile</module>
<module>service-rpc</module>
Expand Down
Expand Up @@ -71,7 +71,7 @@ public ChunkReaderWrap(ReadOnlyMemChunk readOnlyMemChunk, Filter filter) {

public IPointReader getIPointReader() throws IOException {
if (type.equals(ChunkReaderType.DISK_CHUNK)) {
Chunk chunk = chunkLoader.getChunk(chunkMetaData);
Chunk chunk = chunkLoader.loadChunk(chunkMetaData);
ChunkReader chunkReader = new ChunkReader(chunk, filter);
return new ChunkDataIterator(chunkReader);
} else {
Expand All @@ -81,7 +81,7 @@ public IPointReader getIPointReader() throws IOException {

public IReaderByTimestamp getIReaderByTimestamp() throws IOException {
if (type.equals(ChunkReaderType.DISK_CHUNK)) {
Chunk chunk = chunkLoader.getChunk(chunkMetaData);
Chunk chunk = chunkLoader.loadChunk(chunkMetaData);
ChunkReaderByTimestamp chunkReader = new ChunkReaderByTimestamp(chunk);
return new DiskChunkReaderByTimestamp(chunkReader);
} else {
Expand Down
Expand Up @@ -27,6 +27,9 @@

import java.io.IOException;

/**
* To read one chunk from disk, and only used in iotdb server module
*/
public class DiskChunkLoader implements IChunkLoader {

private TsFileSequenceReader reader;
Expand All @@ -36,7 +39,7 @@ public DiskChunkLoader(TsFileSequenceReader reader) {
}

@Override
public Chunk getChunk(ChunkMetadata chunkMetaData) throws IOException {
public Chunk loadChunk(ChunkMetadata chunkMetaData) throws IOException {
return ChunkCache.getInstance().get(chunkMetaData, reader);
}

Expand Down
Expand Up @@ -26,6 +26,9 @@

import java.io.IOException;

/**
* To read one chunk from memory, and only used in iotdb server module
*/
public class MemChunkLoader implements IChunkLoader {

private final ReadOnlyMemChunk chunk;
Expand All @@ -36,7 +39,7 @@ public MemChunkLoader(ReadOnlyMemChunk chunk) {


@Override
public Chunk getChunk(ChunkMetadata chunkMetaData) {
public Chunk loadChunk(ChunkMetadata chunkMetaData) {
throw new UnsupportedOperationException();
}

Expand Down
Expand Up @@ -116,7 +116,7 @@ public void close() {
}

@Override
public List<IPageReader> getPageReaderList() throws IOException {
public List<IPageReader> loadPageReaderList() throws IOException {
// we treat one ReadOnlyMemChunk as one Page
return Collections.singletonList(
new MemPageReader(nextPageData(), readOnlyMemChunk.getChunkMetaData().getStatistics()));
Expand Down
Expand Up @@ -48,7 +48,7 @@ public DiskChunkMetadataLoader(TsFileResource resource, Path seriesPath, QueryCo
}

@Override
public List<ChunkMetadata> getChunkMetadataList() throws IOException {
public List<ChunkMetadata> loadChunkMetadataList() throws IOException {
List<ChunkMetadata> chunkMetadataList = ChunkMetadataCache
.getInstance().get(resource.getPath(), seriesPath);

Expand Down
Expand Up @@ -44,7 +44,7 @@ public MemChunkMetadataLoader(TsFileResource resource, Path seriesPath, QueryCon
}

@Override
public List<ChunkMetadata> getChunkMetadataList() throws IOException {
public List<ChunkMetadata> loadChunkMetadataList() throws IOException {
List<ChunkMetadata> chunkMetadataList = resource.getChunkMetadataList();

DiskChunkMetadataLoader.setDiskChunkLoader(chunkMetadataList, resource, seriesPath, context);
Expand Down
Expand Up @@ -22,8 +22,6 @@
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.filter.TsFileFilter;
import org.apache.iotdb.db.query.reader.chunk.MemChunkLoader;
import org.apache.iotdb.db.query.reader.chunk.MemChunkReader;
import org.apache.iotdb.db.query.reader.universal.PriorityMergeReader;
import org.apache.iotdb.db.utils.FileLoaderUtils;
import org.apache.iotdb.db.utils.QueryUtils;
Expand All @@ -34,14 +32,11 @@
import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
import org.apache.iotdb.tsfile.read.TimeValuePair;
import org.apache.iotdb.tsfile.read.common.BatchData;
import org.apache.iotdb.tsfile.read.common.Chunk;
import org.apache.iotdb.tsfile.read.common.Path;
import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
import org.apache.iotdb.tsfile.read.filter.basic.Filter;
import org.apache.iotdb.tsfile.read.filter.basic.UnaryFilter;
import org.apache.iotdb.tsfile.read.reader.IChunkReader;
import org.apache.iotdb.tsfile.read.reader.IPageReader;
import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader;

import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -246,7 +241,7 @@ private void unpackAllOverlappedTimeSeriesMetadataToCachedChunkMetadata(long end
}

private void unpackOneTimeSeriesMetadata(TimeseriesMetadata timeSeriesMetadata) throws IOException {
cachedChunkMetadata.addAll(timeSeriesMetadata.getChunkMetadataList());
cachedChunkMetadata.addAll(FileLoaderUtils.loadChunkMetadata(timeSeriesMetadata));
}

boolean isChunkOverlapped() throws IOException {
Expand Down Expand Up @@ -343,12 +338,8 @@ private void unpackAllOverlappedChunkMetadataToCachedPageReaders(long endTime, b
}

private void unpackOneChunkMetaData(ChunkMetadata chunkMetaData) throws IOException {
initChunkReader(chunkMetaData)
.getPageReaderList()
.forEach(
pageReader ->
cachedPageReaders.add(
new VersionPageReader(chunkMetaData.getVersion(), pageReader)));
FileLoaderUtils.loadPageReader(chunkMetaData, timeFilter)
.forEach(pageReader -> cachedPageReaders.add(new VersionPageReader(chunkMetaData.getVersion(), pageReader)));
}

/**
Expand Down Expand Up @@ -531,23 +522,6 @@ private BatchData nextOverlappedPage() throws IOException {
throw new IOException("No more batch data");
}

private IChunkReader initChunkReader(ChunkMetadata metaData) throws IOException {
if (metaData == null) {
throw new IOException("Can't init null chunkMeta");
}
IChunkReader chunkReader;
IChunkLoader chunkLoader = metaData.getChunkLoader();
if (chunkLoader instanceof MemChunkLoader) {
MemChunkLoader memChunkLoader = (MemChunkLoader) chunkLoader;
chunkReader = new MemChunkReader(memChunkLoader.getChunk(), timeFilter);
} else {
Chunk chunk = chunkLoader.getChunk(metaData);
chunkReader = new ChunkReader(chunk, timeFilter);
chunkReader.hasNextSatisfiedPage();
}
return chunkReader;
}

private LinkedList<TsFileResource> sortUnSeqFileResources(
List<TsFileResource> tsFileResources) {
return tsFileResources.stream()
Expand Down
Expand Up @@ -26,14 +26,22 @@
import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.control.FileReaderManager;
import org.apache.iotdb.db.query.reader.chunk.DiskChunkLoader;
import org.apache.iotdb.db.query.reader.chunk.MemChunkLoader;
import org.apache.iotdb.db.query.reader.chunk.MemChunkReader;
import org.apache.iotdb.db.query.reader.chunk.metadata.DiskChunkMetadataLoader;
import org.apache.iotdb.db.query.reader.chunk.metadata.MemChunkMetadataLoader;
import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
import org.apache.iotdb.tsfile.read.common.Chunk;
import org.apache.iotdb.tsfile.read.common.Path;
import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
import org.apache.iotdb.tsfile.read.filter.basic.Filter;
import org.apache.iotdb.tsfile.read.reader.IChunkReader;
import org.apache.iotdb.tsfile.read.reader.IPageReader;
import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReader;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -117,6 +125,41 @@ public static TimeseriesMetadata loadTimeSeriesMetadata(TsFileResource resource,
return timeSeriesMetadata;
}

/**
* load all chunk metadata of one time series in one file.
* @param timeSeriesMetadata the corresponding TimeSeriesMetadata in that file.
*/
public static List<ChunkMetadata> loadChunkMetadata(TimeseriesMetadata timeSeriesMetadata) throws IOException {
return timeSeriesMetadata.loadChunkMetadataList();
}


/**
* load all page readers in one chunk that satisfying the timeFilter
* @param chunkMetaData the corresponding chunk metadata
* @param timeFilter it should be a TimeFilter instead of a ValueFilter
*/
public static List<IPageReader> loadPageReader(ChunkMetadata chunkMetaData, Filter timeFilter) throws IOException {
return initChunkReader(chunkMetaData, timeFilter).loadPageReaderList();
}

private static IChunkReader initChunkReader(ChunkMetadata metaData, Filter timeFilter) throws IOException {
if (metaData == null) {
throw new IOException("Can't init null chunkMeta");
}
IChunkReader chunkReader;
IChunkLoader chunkLoader = metaData.getChunkLoader();
if (chunkLoader instanceof MemChunkLoader) {
MemChunkLoader memChunkLoader = (MemChunkLoader) chunkLoader;
chunkReader = new MemChunkReader(memChunkLoader.getChunk(), timeFilter);
} else {
Chunk chunk = chunkLoader.loadChunk(metaData);
chunkReader = new ChunkReader(chunk, timeFilter);
chunkReader.hasNextSatisfiedPage();
}
return chunkReader;
}

/**
* load all ChunkMetadatas belong to the seriesPath
*/
Expand Down
Expand Up @@ -23,7 +23,6 @@
import org.apache.iotdb.db.conf.adapter.ActiveTimeSeriesCounter;
import org.apache.iotdb.db.constant.TestConstant;
import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.engine.flush.pool.FlushSubTaskPoolManager;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
import org.apache.iotdb.db.engine.version.VersionController;
import org.apache.iotdb.db.exception.StorageEngineException;
Expand Down Expand Up @@ -189,7 +188,7 @@ public void test() throws StorageGroupProcessorException, IOException {
PriorityMergeReader unSeqMergeReader = new PriorityMergeReader();
int priorityValue = 1;
for (ChunkMetadata chunkMetaData : metadataQuerier.getChunkMetaDataList(path)) {
Chunk chunk = chunkLoader.getChunk(chunkMetaData);
Chunk chunk = chunkLoader.loadChunk(chunkMetaData);
ChunkReader chunkReader = new ChunkReader(chunk, null);
unSeqMergeReader
.addReader(new ChunkDataIterator(chunkReader), priorityValue);
Expand Down
Expand Up @@ -113,7 +113,7 @@ public void setChunkMetadataLoader(IChunkMetadataLoader chunkMetadataLoader) {
this.chunkMetadataLoader = chunkMetadataLoader;
}

public List<ChunkMetadata> getChunkMetadataList() throws IOException {
return chunkMetadataLoader.getChunkMetadataList();
public List<ChunkMetadata> loadChunkMetadataList() throws IOException {
return chunkMetadataLoader.loadChunkMetadataList();
}
}
Expand Up @@ -27,7 +27,7 @@
import java.io.IOException;

/**
* Read one Chunk and cache it into a LRUCache.
* Read one Chunk and cache it into a LRUCache, only used in tsfile module.
*/
public class CachedChunkLoaderImpl implements IChunkLoader {

Expand Down Expand Up @@ -59,7 +59,7 @@ public Chunk loadObjectByKey(ChunkMetadata metaData) throws IOException {
}

@Override
public Chunk getChunk(ChunkMetadata chunkMetaData) throws IOException {
public Chunk loadChunk(ChunkMetadata chunkMetaData) throws IOException {
Chunk chunk = chunkCache.get(chunkMetaData);
return new Chunk(chunk.getHeader(), chunk.getData().duplicate(), chunk.getDeletedAt(), reader.getEndianType());
}
Expand Down
Expand Up @@ -18,17 +18,17 @@
*/
package org.apache.iotdb.tsfile.read.controller;

import java.io.IOException;

import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
import org.apache.iotdb.tsfile.read.common.Chunk;

import java.io.IOException;

public interface IChunkLoader {

/**
* read all content of any chunk.
*/
Chunk getChunk(ChunkMetadata chunkMetaData) throws IOException;
Chunk loadChunk(ChunkMetadata chunkMetaData) throws IOException;

/**
* close the file reader.
Expand Down
Expand Up @@ -28,6 +28,6 @@ public interface IChunkMetadataLoader {
/**
* read all chunk metadata of one time series in one file.
*/
List<ChunkMetadata> getChunkMetadataList() throws IOException;
List<ChunkMetadata> loadChunkMetadataList() throws IOException;

}
Expand Up @@ -31,5 +31,5 @@ public interface IChunkReader {

void close() throws IOException;

List<IPageReader> getPageReaderList() throws IOException;
List<IPageReader> loadPageReaderList() throws IOException;
}
Expand Up @@ -157,7 +157,7 @@ public ChunkHeader getChunkHeader() {
}

@Override
public List<IPageReader> getPageReaderList() {
public List<IPageReader> loadPageReaderList() {
return pageReaderList;
}
}
Expand Up @@ -39,7 +39,7 @@ public FileSeriesReader(IChunkLoader chunkLoader,

@Override
protected void initChunkReader(ChunkMetadata chunkMetaData) throws IOException {
Chunk chunk = chunkLoader.getChunk(chunkMetaData);
Chunk chunk = chunkLoader.loadChunk(chunkMetaData);
this.chunkReader = new ChunkReader(chunk, filter);
}

Expand Down
Expand Up @@ -146,7 +146,7 @@ private boolean constructNextSatisfiedChunkReader() throws IOException {
}

private void initChunkReader(ChunkMetadata chunkMetaData) throws IOException {
Chunk chunk = chunkLoader.getChunk(chunkMetaData);
Chunk chunk = chunkLoader.loadChunk(chunkMetaData);
this.chunkReader = new ChunkReaderByTimestamp(chunk);
}

Expand Down
Expand Up @@ -57,7 +57,7 @@ public void test() throws IOException {

CachedChunkLoaderImpl seriesChunkLoader = new CachedChunkLoaderImpl(fileReader);
for (ChunkMetadata chunkMetaData : chunkMetadataList) {
Chunk chunk = seriesChunkLoader.getChunk(chunkMetaData);
Chunk chunk = seriesChunkLoader.loadChunk(chunkMetaData);
ChunkHeader chunkHeader = chunk.getHeader();
Assert.assertEquals(chunkHeader.getDataSize(), chunk.getData().remaining());
}
Expand Down

0 comments on commit 48212c6

Please sign in to comment.