You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2021/05/13 05:14:02 UTC

[iotdb] branch master updated: [IOTDB-1378] Fix MetadataIndexTree constructs error when existing more than one chunks in vector (#3180)

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

haonan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 6907e34  [IOTDB-1378] Fix MetadataIndexTree constructs error when existing more than one chunks in vector (#3180)
6907e34 is described below

commit 6907e34c3b25e189ba4cb7cad36afff53d5893a1
Author: Zesong Sun <sz...@mails.tsinghua.edu.cn>
AuthorDate: Thu May 13 13:13:30 2021 +0800

    [IOTDB-1378] Fix MetadataIndexTree constructs error when existing more than one chunks in vector (#3180)
---
 .../src/main/java/org/apache/iotdb/tsfile/TsFileSequenceRead.java    | 5 +++++
 .../java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java    | 4 ++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileSequenceRead.java b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileSequenceRead.java
index 2755777..a51953b 100644
--- a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileSequenceRead.java
+++ b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileSequenceRead.java
@@ -20,6 +20,7 @@ package org.apache.iotdb.tsfile;
 
 import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
+import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
 import org.apache.iotdb.tsfile.encoding.decoder.Decoder;
 import org.apache.iotdb.tsfile.file.MetaMarker;
 import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader;
@@ -67,7 +68,11 @@ public class TsFileSequenceRead {
       while ((marker = reader.readMarker()) != MetaMarker.SEPARATOR) {
         switch (marker) {
           case MetaMarker.CHUNK_HEADER:
+          case (byte) (MetaMarker.CHUNK_HEADER | TsFileConstant.TIME_COLUMN_MASK):
+          case (byte) (MetaMarker.CHUNK_HEADER | TsFileConstant.VALUE_COLUMN_MASK):
           case MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER:
+          case (byte) (MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER | TsFileConstant.TIME_COLUMN_MASK):
+          case (byte) (MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER | TsFileConstant.VALUE_COLUMN_MASK):
             System.out.println("\t[Chunk]");
             System.out.println("\tchunk type: " + marker);
             System.out.println("\tposition: " + reader.position());
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
index 9fe7453..fb43fe4 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
@@ -262,7 +262,8 @@ public class TsFileIOWriter {
           Path series = new Path(chunkGroupMetadata.getDevice(), chunkMetadata.getMeasurementUid());
           chunkMetadataListMap.computeIfAbsent(series, k -> new ArrayList<>()).add(chunkMetadata);
           idx++;
-          Map<Path, List<IChunkMetadata>> chunkMetadataListMapInVector = new TreeMap<>();
+          Map<Path, List<IChunkMetadata>> chunkMetadataListMapInVector =
+              vectorToPathsMap.computeIfAbsent(series, key -> new TreeMap<>());
 
           // value columns of a vector series
           while (idx < chunkMetadatas.size() && chunkMetadatas.get(idx).isValueColumn()) {
@@ -274,7 +275,6 @@ public class TsFileIOWriter {
                 .add(chunkMetadata);
             idx++;
           }
-          vectorToPathsMap.put(series, chunkMetadataListMapInVector);
         }
       }
     }