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