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);
}
}
}