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 03:36:54 UTC

[iotdb] 01/01: [To rel/0.12] fix versionInfo npe when query 0.11 tsfile during upgrading

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

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

commit dc2ba9ea027c64652fae97f031cb31116eb09f9c
Author: HTHou <hh...@outlook.com>
AuthorDate: Thu May 13 11:36:14 2021 +0800

    [To rel/0.12] fix versionInfo npe when query 0.11 tsfile during upgrading
---
 .../org/apache/iotdb/tsfile/v2/file/metadata/TsFileMetadataV2.java   | 5 ++++-
 .../org/apache/iotdb/tsfile/v2/read/TsFileSequenceReaderForV2.java   | 3 +--
 2 files changed, 5 insertions(+), 3 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..44aa0f1 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 {
@@ -40,6 +41,7 @@ public class TsFileMetadataV2 {
       ByteBuffer buffer, List<Pair<Long, Long>> versionInfo) {
     TsFileMetadata fileMetaData = new TsFileMetadata();
 
+    List<Pair<Long, Long>> tmpVersionInfo = new ArrayList<>();
     // metadataIndex
     fileMetaData.setMetadataIndex(MetadataIndexNodeV2.deserializeFrom(buffer));
     // totalChunkNum
@@ -52,9 +54,10 @@ public class TsFileMetadataV2 {
     for (int i = 0; i < versionSize; i++) {
       long versionPos = ReadWriteIOUtils.readLong(buffer);
       long version = ReadWriteIOUtils.readLong(buffer);
-      versionInfo.add(new Pair<>(versionPos, version));
+      tmpVersionInfo.add(new Pair<>(versionPos, version));
     }
 
+    versionInfo = tmpVersionInfo;
     // metaOffset
     long metaOffset = ReadWriteIOUtils.readLong(buffer);
     fileMetaData.setMetaOffset(metaOffset);
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 2541e83..b31b09f 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,8 +145,7 @@ public class TsFileSequenceReaderForV2 extends TsFileSequenceReader implements A
    */
   @Override
   public TsFileMetadata readFileMetadata() throws IOException {
-    if (tsFileMetaData == null) {
-      versionInfo = new ArrayList<>();
+    if (tsFileMetaData == null || versionInfo == null) {
       tsFileMetaData =
           TsFileMetadataV2.deserializeFrom(
               readData(fileMetadataPos, fileMetadataSize), versionInfo);