This is an automated email from the ASF dual-hosted git repository.
zyk pushed a commit to branch rel/1.2
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/1.2 by this push:
new de0d9334d2b [To rel/1.2] Fix view snapshot recover (#10322)
de0d9334d2b is described below
commit de0d9334d2b1fc5311019fe64b3bad4c24f28487
Author: Marcos_Zyk <[email protected]>
AuthorDate: Mon Jun 26 17:18:47 2023 +0800
[To rel/1.2] Fix view snapshot recover (#10322)
---
.../mtree/snapshot/MemMTreeSnapshotUtil.java | 37 +++++++++++-----------
.../iotdb/tsfile/utils/ReadWriteIOUtils.java | 11 +++++++
2 files changed, 30 insertions(+), 18 deletions(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/snapshot/MemMTreeSnapshotUtil.java
b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/snapshot/MemMTreeSnapshotUtil.java
index a4a4a4be3eb..8221e858764 100644
---
a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/snapshot/MemMTreeSnapshotUtil.java
+++
b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/snapshot/MemMTreeSnapshotUtil.java
@@ -341,23 +341,21 @@ public class MemMTreeSnapshotUtil {
public Boolean visitMeasurementMNode(
AbstractMeasurementMNode<?, ? extends IMNode<?>> node, OutputStream
outputStream) {
try {
- if (node.isMeasurement()) {
- if (node.isLogicalView()) {
- ReadWriteIOUtils.write(LOGICAL_VIEW_MNODE_TYPE, outputStream);
- ReadWriteIOUtils.write(node.getName(), outputStream);
- node.getSchema().serializeTo(outputStream);
- } else {
- ReadWriteIOUtils.write(MEASUREMENT_MNODE_TYPE, outputStream);
- ReadWriteIOUtils.write(node.getName(), outputStream);
- node.getSchema().serializeTo(outputStream);
- ReadWriteIOUtils.write(node.getAlias(), outputStream);
- ReadWriteIOUtils.write(node.getOffset(), outputStream);
- ReadWriteIOUtils.write(node.isPreDeleted(), outputStream);
- }
- return true;
+ if (node.isLogicalView()) {
+ ReadWriteIOUtils.write(LOGICAL_VIEW_MNODE_TYPE, outputStream);
+ ReadWriteIOUtils.write(node.getName(), outputStream);
+ node.getSchema().serializeTo(outputStream);
+ ReadWriteIOUtils.write(node.getOffset(), outputStream);
+ ReadWriteIOUtils.write(node.isPreDeleted(), outputStream);
+ } else {
+ ReadWriteIOUtils.write(MEASUREMENT_MNODE_TYPE, outputStream);
+ ReadWriteIOUtils.write(node.getName(), outputStream);
+ node.getSchema().serializeTo(outputStream);
+ ReadWriteIOUtils.write(node.getAlias(), outputStream);
+ ReadWriteIOUtils.write(node.getOffset(), outputStream);
+ ReadWriteIOUtils.write(node.isPreDeleted(), outputStream);
}
- throw new IllegalArgumentException(
- "visitMeasurementMNode got unknown node type" +
node.getMNodeType(false).toString());
+ return true;
} catch (Exception e) {
logger.error(SERIALIZE_ERROR_INFO, e);
return false;
@@ -394,7 +392,7 @@ public class MemMTreeSnapshotUtil {
IMemMNode node = nodeFactory.createDatabaseDeviceMNode(null, name, 0);
node.getAsDeviceMNode().setSchemaTemplateId(ReadWriteIOUtils.readInt(inputStream));
node.getAsDeviceMNode().setUseTemplate(ReadWriteIOUtils.readBool(inputStream));
-
node.getAsDeviceMNode().setAligned(ReadWriteIOUtils.readBool(inputStream));
+
node.getAsDeviceMNode().setAligned(ReadWriteIOUtils.readBoolObject(inputStream));
return node;
}
@@ -403,7 +401,7 @@ public class MemMTreeSnapshotUtil {
IDeviceMNode<IMemMNode> node = nodeFactory.createDeviceMNode(null, name);
node.setSchemaTemplateId(ReadWriteIOUtils.readInt(inputStream));
node.setUseTemplate(ReadWriteIOUtils.readBool(inputStream));
- node.setAligned(ReadWriteIOUtils.readBool(inputStream));
+ node.setAligned(ReadWriteIOUtils.readBoolObject(inputStream));
return node.getAsMNode();
}
@@ -422,8 +420,11 @@ public class MemMTreeSnapshotUtil {
public IMemMNode deserializeLogicalViewMNode(InputStream inputStream)
throws IOException {
String name = ReadWriteIOUtils.readString(inputStream);
LogicalViewSchema logicalViewSchema =
LogicalViewSchema.deserializeFrom(inputStream);
+ long tagOffset = ReadWriteIOUtils.readLong(inputStream);
IMeasurementMNode<IMemMNode> node =
nodeFactory.createLogicalViewMNode(null, name, new
LogicalViewInfo(logicalViewSchema));
+ node.setOffset(tagOffset);
+ node.setPreDeleted(ReadWriteIOUtils.readBool(inputStream));
return node.getAsMNode();
}
}
diff --git
a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ReadWriteIOUtils.java
b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ReadWriteIOUtils.java
index cb9bc523512..08383ca5293 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ReadWriteIOUtils.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ReadWriteIOUtils.java
@@ -89,6 +89,17 @@ public class ReadWriteIOUtils {
return flag == 1;
}
+ /** read a Boolean from byteBuffer. */
+ public static Boolean readBoolObject(InputStream inputStream) throws
IOException {
+ int flag = inputStream.read();
+ if (flag == 1) {
+ return true;
+ } else if (flag == 0) {
+ return false;
+ }
+ return null;
+ }
+
/** read a bool from byteBuffer. */
public static boolean readBool(ByteBuffer buffer) {
byte a = buffer.get();