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 2022/11/21 07:59:14 UTC

[iotdb] branch master updated: Fix wal ut error when serializing and deserializing (#8069)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 76e1bc032d Fix wal ut error when serializing and deserializing (#8069)
76e1bc032d is described below

commit 76e1bc032db8c22f4b64cb4bcb9d7ef678992108
Author: Alan Choo <43...@users.noreply.github.com>
AuthorDate: Mon Nov 21 15:59:09 2022 +0800

    Fix wal ut error when serializing and deserializing (#8069)
---
 .../org/apache/iotdb/commons/conf/CommonDescriptor.java |  5 ++++-
 .../db/mpp/plan/planner/plan/node/write/InsertNode.java |  4 ++--
 .../mpp/plan/planner/plan/node/write/InsertRowNode.java |  2 +-
 .../iotdb/db/wal/allocation/ElasticStrategyTest.java    | 17 +++++++++--------
 .../db/wal/allocation/FirstCreateStrategyTest.java      | 17 +++++++++--------
 .../iotdb/db/wal/allocation/RoundRobinStrategyTest.java | 17 +++++++++--------
 6 files changed, 34 insertions(+), 28 deletions(-)

diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonDescriptor.java b/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonDescriptor.java
index 739ad39743..869cd348a0 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonDescriptor.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonDescriptor.java
@@ -88,7 +88,10 @@ public class CommonDescriptor {
     config.setSyncFolder(properties.getProperty("sync_dir", config.getSyncFolder()).trim());
 
     config.setWalDirs(
-        properties.getProperty("dn_wal_dirs", config.getWalDirs()[0]).trim().split(","));
+        properties
+            .getProperty("dn_wal_dirs", String.join(",", config.getWalDirs()))
+            .trim()
+            .split(","));
 
     config.setCnRpcThriftCompressionEnabled(
         Boolean.parseBoolean(
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java
index 5e41f00adb..c53bb9fcee 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java
@@ -218,7 +218,7 @@ public abstract class InsertNode extends WritePlanNode {
    * created before calling this
    */
   protected void deserializeMeasurementSchemas(DataInputStream stream) throws IOException {
-    for (int i = 0; i < measurementSchemas.length; i++) {
+    for (int i = 0; i < measurements.length; i++) {
       if (IoTDBDescriptor.getInstance().getConfig().isClusterMode()) {
         measurementSchemas[i] = MeasurementSchema.deserializeFrom(stream);
         measurements[i] = measurementSchemas[i].getMeasurementId();
@@ -231,7 +231,7 @@ public abstract class InsertNode extends WritePlanNode {
   }
 
   protected void deserializeMeasurementSchemas(ByteBuffer buffer) {
-    for (int i = 0; i < measurementSchemas.length; i++) {
+    for (int i = 0; i < measurements.length; i++) {
       measurementSchemas[i] = MeasurementSchema.deserializeFrom(buffer);
       measurements[i] = measurementSchemas[i].getMeasurementId();
     }
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowNode.java
index 459ed6d04b..36cba297e3 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertRowNode.java
@@ -626,7 +626,7 @@ public class InsertRowNode extends InsertNode implements WALEntryValue {
 
   /** Serialize measurements and values, ignoring failed time series */
   private void serializeMeasurementsAndValues(IWALByteBufferView buffer) {
-    buffer.putInt(measurementSchemas.length - getFailedMeasurementNumber());
+    buffer.putInt(measurements.length - getFailedMeasurementNumber());
     serializeMeasurementSchemasToWAL(buffer);
     putDataTypesAndValues(buffer);
     buffer.put((byte) (isAligned ? 1 : 0));
diff --git a/server/src/test/java/org/apache/iotdb/db/wal/allocation/ElasticStrategyTest.java b/server/src/test/java/org/apache/iotdb/db/wal/allocation/ElasticStrategyTest.java
index 7850a11ef9..e9f6a59d9a 100644
--- a/server/src/test/java/org/apache/iotdb/db/wal/allocation/ElasticStrategyTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/wal/allocation/ElasticStrategyTest.java
@@ -29,6 +29,7 @@ import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.wal.node.IWALNode;
 import org.apache.iotdb.db.wal.utils.WALFileUtils;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.utils.Binary;
 
 import org.junit.After;
 import org.junit.Before;
@@ -54,8 +55,8 @@ public class ElasticStrategyTest {
   @Before
   public void setUp() throws Exception {
     prevWalDirs = commonConfig.getWalDirs();
-    commonConfig.setWalDirs(walDirs);
     EnvironmentUtils.envSetUp();
+    commonConfig.setWalDirs(walDirs);
   }
 
   @After
@@ -113,13 +114,13 @@ public class ElasticStrategyTest {
           TSDataType.TEXT
         };
 
-    String[] columns = new String[6];
-    columns[0] = 1.0 + "";
-    columns[1] = 2 + "";
-    columns[2] = 10000 + "";
-    columns[3] = 100 + "";
-    columns[4] = false + "";
-    columns[5] = "hh" + 0;
+    Object[] columns = new Object[6];
+    columns[0] = 1.0;
+    columns[1] = 2.0F;
+    columns[2] = 10000L;
+    columns[3] = 100;
+    columns[4] = false;
+    columns[5] = new Binary("hh" + 0);
 
     return new InsertRowNode(
         new PlanNodeId("0"),
diff --git a/server/src/test/java/org/apache/iotdb/db/wal/allocation/FirstCreateStrategyTest.java b/server/src/test/java/org/apache/iotdb/db/wal/allocation/FirstCreateStrategyTest.java
index 6487be1835..8b710e67eb 100644
--- a/server/src/test/java/org/apache/iotdb/db/wal/allocation/FirstCreateStrategyTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/wal/allocation/FirstCreateStrategyTest.java
@@ -29,6 +29,7 @@ import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.wal.node.IWALNode;
 import org.apache.iotdb.db.wal.utils.WALFileUtils;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.utils.Binary;
 
 import org.junit.After;
 import org.junit.Before;
@@ -54,8 +55,8 @@ public class FirstCreateStrategyTest {
   @Before
   public void setUp() throws Exception {
     prevWalDirs = commonConfig.getWalDirs();
-    commonConfig.setWalDirs(walDirs);
     EnvironmentUtils.envSetUp();
+    commonConfig.setWalDirs(walDirs);
   }
 
   @After
@@ -150,13 +151,13 @@ public class FirstCreateStrategyTest {
           TSDataType.TEXT
         };
 
-    String[] columns = new String[6];
-    columns[0] = 1.0 + "";
-    columns[1] = 2 + "";
-    columns[2] = 10000 + "";
-    columns[3] = 100 + "";
-    columns[4] = false + "";
-    columns[5] = "hh" + 0;
+    Object[] columns = new Object[6];
+    columns[0] = 1.0;
+    columns[1] = 2.0F;
+    columns[2] = 10000L;
+    columns[3] = 100;
+    columns[4] = false;
+    columns[5] = new Binary("hh" + 0);
 
     return new InsertRowNode(
         new PlanNodeId("0"),
diff --git a/server/src/test/java/org/apache/iotdb/db/wal/allocation/RoundRobinStrategyTest.java b/server/src/test/java/org/apache/iotdb/db/wal/allocation/RoundRobinStrategyTest.java
index bcd1f7dd9a..1b74cc1132 100644
--- a/server/src/test/java/org/apache/iotdb/db/wal/allocation/RoundRobinStrategyTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/wal/allocation/RoundRobinStrategyTest.java
@@ -29,6 +29,7 @@ import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.wal.node.IWALNode;
 import org.apache.iotdb.db.wal.utils.WALFileUtils;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.utils.Binary;
 
 import org.junit.After;
 import org.junit.Before;
@@ -54,8 +55,8 @@ public class RoundRobinStrategyTest {
   @Before
   public void setUp() throws Exception {
     prevWalDirs = commonConfig.getWalDirs();
-    commonConfig.setWalDirs(walDirs);
     EnvironmentUtils.envSetUp();
+    commonConfig.setWalDirs(walDirs);
   }
 
   @After
@@ -113,13 +114,13 @@ public class RoundRobinStrategyTest {
           TSDataType.TEXT
         };
 
-    String[] columns = new String[6];
-    columns[0] = 1.0 + "";
-    columns[1] = 2 + "";
-    columns[2] = 10000 + "";
-    columns[3] = 100 + "";
-    columns[4] = false + "";
-    columns[5] = "hh" + 0;
+    Object[] columns = new Object[6];
+    columns[0] = 1.0;
+    columns[1] = 2.0F;
+    columns[2] = 10000L;
+    columns[3] = 100;
+    columns[4] = false;
+    columns[5] = new Binary("hh" + 0);
 
     return new InsertRowNode(
         new PlanNodeId("0"),