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

Reply via email to