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