You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2021/11/11 09:25:20 UTC
[iotdb] branch new_vector updated: fix cit
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch new_vector
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/new_vector by this push:
new d31038b fix cit
d31038b is described below
commit d31038b2207713f6b8a9fe9ad7fcc96ca04144e2
Author: JackieTien97 <Ja...@foxmail.com>
AuthorDate: Thu Nov 11 17:24:45 2021 +0800
fix cit
---
.../chunk/metadata/DiskChunkMetadataLoader.java | 56 ++++++++++------------
.../metadata/MemAlignedChunkMetadataLoader.java | 23 ++++++---
.../chunk/metadata/MemChunkMetadataLoader.java | 15 +++++-
.../tsfile/file/metadata/AlignedChunkMetadata.java | 2 +-
4 files changed, 56 insertions(+), 40 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/DiskChunkMetadataLoader.java b/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/DiskChunkMetadataLoader.java
index 8459f55..abc2574 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/DiskChunkMetadataLoader.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/DiskChunkMetadataLoader.java
@@ -59,38 +59,6 @@ public class DiskChunkMetadataLoader implements IChunkMetadataLoader {
List<IChunkMetadata> chunkMetadataList =
((TimeseriesMetadata) timeSeriesMetadata).getChunkMetadataList();
- setDiskChunkLoader(chunkMetadataList, resource, seriesPath, context);
-
- /*
- * remove not satisfied ChunkMetaData
- */
- chunkMetadataList.removeIf(
- chunkMetaData ->
- (filter != null
- && !filter.satisfyStartEndTime(
- chunkMetaData.getStartTime(), chunkMetaData.getEndTime()))
- || chunkMetaData.getStartTime() > chunkMetaData.getEndTime());
-
- // For chunkMetadata from old TsFile, do not set version
- for (IChunkMetadata metadata : chunkMetadataList) {
- if (!metadata.isFromOldTsFile()) {
- metadata.setVersion(resource.getVersion());
- }
- }
-
- if (context.isDebug()) {
- DEBUG_LOGGER.info("After removed by filter Chunk meta data list is: ");
- chunkMetadataList.forEach(c -> DEBUG_LOGGER.info(c.toString()));
- }
-
- return chunkMetadataList;
- }
-
- public static void setDiskChunkLoader(
- List<IChunkMetadata> chunkMetadataList,
- TsFileResource resource,
- PartialPath seriesPath,
- QueryContext context) {
List<Modification> pathModifications =
context.getPathModifications(resource.getModFile(), seriesPath);
@@ -121,5 +89,29 @@ public class DiskChunkMetadataLoader implements IChunkMetadataLoader {
chunkMetadata.setChunkLoader(new DiskChunkLoader(context.isDebug()));
}
});
+
+ /*
+ * remove not satisfied ChunkMetaData
+ */
+ chunkMetadataList.removeIf(
+ chunkMetaData ->
+ (filter != null
+ && !filter.satisfyStartEndTime(
+ chunkMetaData.getStartTime(), chunkMetaData.getEndTime()))
+ || chunkMetaData.getStartTime() > chunkMetaData.getEndTime());
+
+ // For chunkMetadata from old TsFile, do not set version
+ for (IChunkMetadata metadata : chunkMetadataList) {
+ if (!metadata.isFromOldTsFile()) {
+ metadata.setVersion(resource.getVersion());
+ }
+ }
+
+ if (context.isDebug()) {
+ DEBUG_LOGGER.info("After removed by filter Chunk meta data list is: ");
+ chunkMetadataList.forEach(c -> DEBUG_LOGGER.info(c.toString()));
+ }
+
+ return chunkMetadataList;
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/MemAlignedChunkMetadataLoader.java b/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/MemAlignedChunkMetadataLoader.java
index 11fe5a8..1c01895 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/MemAlignedChunkMetadataLoader.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/MemAlignedChunkMetadataLoader.java
@@ -22,12 +22,12 @@ import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
import org.apache.iotdb.db.metadata.path.PartialPath;
import org.apache.iotdb.db.query.context.QueryContext;
+import org.apache.iotdb.db.query.reader.chunk.DiskChunkLoader;
import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
import org.apache.iotdb.tsfile.read.controller.IChunkMetadataLoader;
import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import java.util.ArrayList;
import java.util.List;
public class MemAlignedChunkMetadataLoader implements IChunkMetadataLoader {
@@ -45,13 +45,24 @@ public class MemAlignedChunkMetadataLoader implements IChunkMetadataLoader {
this.timeFilter = timeFilter;
}
- // TODO current implementation is same as MemChunkMetadataLoader, I think we need to move the
- // processing of modification for ReadOnlyMemChunk from TSP to this class
- // There is no need to set IChunkLoader for it, because the MemChunkLoader has already been set
- // while creating ReadOnlyMemChunk
@Override
public List<IChunkMetadata> loadChunkMetadataList(ITimeSeriesMetadata timeSeriesMetadata) {
- List<IChunkMetadata> chunkMetadataList = new ArrayList<>();
+
+ // There is no need to apply modifications to these, because we already do that while generating
+ // it in TSP
+ List<IChunkMetadata> chunkMetadataList = resource.getChunkMetadataList();
+
+ chunkMetadataList.forEach(
+ chunkMetadata -> {
+ if (chunkMetadata.needSetChunkLoader()) {
+ chunkMetadata.setFilePath(resource.getTsFilePath());
+ chunkMetadata.setClosed(resource.isClosed());
+ chunkMetadata.setChunkLoader(new DiskChunkLoader(context.isDebug()));
+ }
+ });
+
+ // There is no need to set IChunkLoader for it, because the MemChunkLoader has already been set
+ // while creating ReadOnlyMemChunk
List<ReadOnlyMemChunk> memChunks = resource.getReadOnlyMemChunk();
if (memChunks != null) {
for (ReadOnlyMemChunk readOnlyMemChunk : memChunks) {
diff --git a/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/MemChunkMetadataLoader.java b/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/MemChunkMetadataLoader.java
index daec942..60b1fb7 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/MemChunkMetadataLoader.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/reader/chunk/metadata/MemChunkMetadataLoader.java
@@ -22,6 +22,7 @@ import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk;
import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
import org.apache.iotdb.db.metadata.path.PartialPath;
import org.apache.iotdb.db.query.context.QueryContext;
+import org.apache.iotdb.db.query.reader.chunk.DiskChunkLoader;
import org.apache.iotdb.tsfile.file.metadata.IChunkMetadata;
import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata;
import org.apache.iotdb.tsfile.read.controller.IChunkMetadataLoader;
@@ -46,8 +47,20 @@ public class MemChunkMetadataLoader implements IChunkMetadataLoader {
@Override
public List<IChunkMetadata> loadChunkMetadataList(ITimeSeriesMetadata timeSeriesMetadata) {
+ // There is no need to apply modifications to these, because we already do that while generating
+ // it in TSP
List<IChunkMetadata> chunkMetadataList = resource.getChunkMetadataList();
- DiskChunkMetadataLoader.setDiskChunkLoader(chunkMetadataList, resource, seriesPath, context);
+
+ // it is ok, even if it is not thread safe, because the cost of creating a DiskChunkLoader is
+ // very cheap.
+ chunkMetadataList.forEach(
+ chunkMetadata -> {
+ if (chunkMetadata.needSetChunkLoader()) {
+ chunkMetadata.setFilePath(resource.getTsFilePath());
+ chunkMetadata.setClosed(resource.isClosed());
+ chunkMetadata.setChunkLoader(new DiskChunkLoader(context.isDebug()));
+ }
+ });
List<ReadOnlyMemChunk> memChunks = resource.getReadOnlyMemChunk();
if (memChunks != null) {
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedChunkMetadata.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedChunkMetadata.java
index d2379ff..f897e70 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedChunkMetadata.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedChunkMetadata.java
@@ -121,7 +121,7 @@ public class AlignedChunkMetadata implements IChunkMetadata {
@Override
public IChunkLoader getChunkLoader() {
- return timeChunkMetadata.getChunkLoader();
+ return chunkLoader;
}
@Override