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 06:37:56 UTC

[iotdb] 01/02: [To rel/0.12] fix versionInfo NPE when query upgrading 0.11 tsfile (#3178)

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

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

commit f8c1fcaf80f57e65f55868ff6517437ae3b88490
Author: Haonan <hh...@outlook.com>
AuthorDate: Thu May 13 13:52:52 2021 +0800

    [To rel/0.12] fix versionInfo NPE when query upgrading 0.11 tsfile (#3178)
---
 .../apache/iotdb/tsfile/v2/file/metadata/TsFileMetadataV2.java |  9 +++++----
 .../apache/iotdb/tsfile/v2/read/TsFileSequenceReaderForV2.java | 10 +++++-----
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/metadata/TsFileMetadataV2.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/metadata/TsFileMetadataV2.java
index 9825a5c..2ebd12e 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/metadata/TsFileMetadataV2.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/metadata/TsFileMetadataV2.java
@@ -24,6 +24,7 @@ import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import java.nio.ByteBuffer;
+import java.util.ArrayList;
 import java.util.List;
 
 public class TsFileMetadataV2 {
@@ -34,12 +35,12 @@ public class TsFileMetadataV2 {
    * deserialize data from the buffer.
    *
    * @param buffer -buffer use to deserialize
-   * @return -a instance of TsFileMetaData
+   * @return -a pair of TsFileMetaData and VersionInfo
    */
-  public static TsFileMetadata deserializeFrom(
-      ByteBuffer buffer, List<Pair<Long, Long>> versionInfo) {
+  public static Pair<TsFileMetadata, List<Pair<Long, Long>>> deserializeFrom(ByteBuffer buffer) {
     TsFileMetadata fileMetaData = new TsFileMetadata();
 
+    List<Pair<Long, Long>> versionInfo = new ArrayList<>();
     // metadataIndex
     fileMetaData.setMetadataIndex(MetadataIndexNodeV2.deserializeFrom(buffer));
     // totalChunkNum
@@ -70,6 +71,6 @@ public class TsFileMetadataV2 {
           BloomFilter.buildBloomFilter(bytes, filterSize, hashFunctionSize));
     }
 
-    return fileMetaData;
+    return new Pair<>(fileMetaData, versionInfo);
   }
 }
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/read/TsFileSequenceReaderForV2.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/read/TsFileSequenceReaderForV2.java
index d07007b..117da82 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/read/TsFileSequenceReaderForV2.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/read/TsFileSequenceReaderForV2.java
@@ -145,11 +145,11 @@ public class TsFileSequenceReaderForV2 extends TsFileSequenceReader implements A
    */
   @Override
   public TsFileMetadata readFileMetadata() throws IOException {
-    if (tsFileMetaData == null) {
-      versionInfo = new ArrayList<>();
-      tsFileMetaData =
-          TsFileMetadataV2.deserializeFrom(
-              readData(fileMetadataPos, fileMetadataSize), versionInfo);
+    if (tsFileMetaData == null || versionInfo == null) {
+      Pair<TsFileMetadata, List<Pair<Long, Long>>> pair =
+          TsFileMetadataV2.deserializeFrom(readData(fileMetadataPos, fileMetadataSize));
+      tsFileMetaData = pair.left;
+      versionInfo = pair.right;
     }
     return tsFileMetaData;
   }