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