You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2022/04/13 02:56:53 UTC
[iotdb] 01/01: remove IllegalPathException and IOException in PlanFragment deserialization
This is an automated email from the ASF dual-hosted git repository.
xingtanzjr pushed a commit to branch xingtanzjr/modification_pr
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 3b3bbc22bbe530e7ed63e3eb0bbb521442ce1279
Author: Jinrui.Zhang <xi...@gmail.com>
AuthorDate: Wed Apr 13 10:56:40 2022 +0800
remove IllegalPathException and IOException in PlanFragment deserialization
---
.../org/apache/iotdb/commons/consensus/ConsensusGroupId.java | 5 ++---
.../org/apache/iotdb/commons/partition/RegionReplicaSet.java | 3 +--
.../iotdb/db/consensus/statemachine/BaseStateMachine.java | 10 +++-------
.../apache/iotdb/db/mpp/sql/planner/plan/FragmentInstance.java | 5 +----
.../org/apache/iotdb/db/mpp/sql/planner/plan/PlanFragment.java | 5 ++---
.../iotdb/db/mpp/sql/planner/plan/node/PlanNodeType.java | 3 +--
.../planner/plan/node/metedata/read/DevicesSchemaScanNode.java | 10 +++++++---
.../plan/node/metedata/read/TimeSeriesSchemaScanNode.java | 10 +++++++---
.../planner/plan/node/metedata/write/CreateTimeSeriesNode.java | 9 ++++++---
.../db/mpp/sql/planner/plan/node/process/DeviceMergeNode.java | 3 +--
.../db/mpp/sql/planner/plan/node/process/ExchangeNode.java | 3 +--
.../iotdb/db/mpp/sql/plan/FragmentInstanceSerdeTest.java | 6 ++----
12 files changed, 34 insertions(+), 38 deletions(-)
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/consensus/ConsensusGroupId.java b/node-commons/src/main/java/org/apache/iotdb/commons/consensus/ConsensusGroupId.java
index 13e38df6c0..ba38960173 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/consensus/ConsensusGroupId.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/consensus/ConsensusGroupId.java
@@ -19,7 +19,6 @@
package org.apache.iotdb.commons.consensus;
-import java.io.IOException;
import java.nio.ByteBuffer;
public interface ConsensusGroupId {
@@ -39,10 +38,10 @@ public interface ConsensusGroupId {
GroupType getType();
class Factory {
- public static ConsensusGroupId create(ByteBuffer buffer) throws IOException {
+ public static ConsensusGroupId create(ByteBuffer buffer) {
int index = buffer.get();
if (index >= GroupType.values().length) {
- throw new IOException("unrecognized id type " + index);
+ throw new IllegalArgumentException("invalid ConsensusGroup type. Ordinal is: " + index);
}
GroupType type = GroupType.values()[index];
ConsensusGroupId groupId = createEmpty(type);
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/partition/RegionReplicaSet.java b/node-commons/src/main/java/org/apache/iotdb/commons/partition/RegionReplicaSet.java
index 2217f8832c..d98695824d 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/partition/RegionReplicaSet.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/partition/RegionReplicaSet.java
@@ -21,7 +21,6 @@ package org.apache.iotdb.commons.partition;
import org.apache.iotdb.commons.cluster.DataNodeLocation;
import org.apache.iotdb.commons.consensus.ConsensusGroupId;
-import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
@@ -70,7 +69,7 @@ public class RegionReplicaSet {
});
}
- public static RegionReplicaSet deserializeImpl(ByteBuffer buffer) throws IOException {
+ public static RegionReplicaSet deserializeImpl(ByteBuffer buffer) {
ConsensusGroupId consensusGroupId = ConsensusGroupId.Factory.create(buffer);
int size = buffer.getInt();
diff --git a/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/BaseStateMachine.java b/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/BaseStateMachine.java
index a7ef03b32e..873d652013 100644
--- a/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/BaseStateMachine.java
+++ b/server/src/main/java/org/apache/iotdb/db/consensus/statemachine/BaseStateMachine.java
@@ -24,15 +24,12 @@ import org.apache.iotdb.consensus.common.DataSet;
import org.apache.iotdb.consensus.common.request.ByteBufferConsensusRequest;
import org.apache.iotdb.consensus.common.request.IConsensusRequest;
import org.apache.iotdb.consensus.statemachine.IStateMachine;
-import org.apache.iotdb.db.exception.metadata.IllegalPathException;
import org.apache.iotdb.db.mpp.sql.planner.plan.FragmentInstance;
import org.apache.iotdb.rpc.TSStatusCode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.IOException;
-
public abstract class BaseStateMachine implements IStateMachine {
private static final Logger logger = LoggerFactory.getLogger(BaseStateMachine.class);
@@ -41,7 +38,7 @@ public abstract class BaseStateMachine implements IStateMachine {
public TSStatus write(IConsensusRequest request) {
try {
return write(getFragmentInstance(request));
- } catch (IllegalArgumentException | IllegalPathException | IOException e) {
+ } catch (IllegalArgumentException e) {
logger.error(e.getMessage());
return new TSStatus(TSStatusCode.INTERNAL_SERVER_ERROR.getStatusCode());
}
@@ -53,7 +50,7 @@ public abstract class BaseStateMachine implements IStateMachine {
public DataSet read(IConsensusRequest request) {
try {
return read(getFragmentInstance(request));
- } catch (IllegalArgumentException | IllegalPathException | IOException e) {
+ } catch (IllegalArgumentException e) {
logger.error(e.getMessage());
return null;
}
@@ -61,8 +58,7 @@ public abstract class BaseStateMachine implements IStateMachine {
protected abstract DataSet read(FragmentInstance fragmentInstance);
- private FragmentInstance getFragmentInstance(IConsensusRequest request)
- throws IllegalPathException, IOException {
+ private FragmentInstance getFragmentInstance(IConsensusRequest request) {
FragmentInstance instance;
if (request instanceof ByteBufferConsensusRequest) {
instance =
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/FragmentInstance.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/FragmentInstance.java
index a9b259c693..8edf239517 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/FragmentInstance.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/FragmentInstance.java
@@ -21,7 +21,6 @@ package org.apache.iotdb.db.mpp.sql.planner.plan;
import org.apache.iotdb.commons.cluster.Endpoint;
import org.apache.iotdb.commons.partition.RegionReplicaSet;
import org.apache.iotdb.consensus.common.request.IConsensusRequest;
-import org.apache.iotdb.db.exception.metadata.IllegalPathException;
import org.apache.iotdb.db.mpp.common.FragmentInstanceId;
import org.apache.iotdb.db.mpp.common.PlanFragmentId;
import org.apache.iotdb.db.mpp.sql.analyze.QueryType;
@@ -32,7 +31,6 @@ import org.apache.iotdb.tsfile.read.filter.basic.Filter;
import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Objects;
@@ -130,8 +128,7 @@ public class FragmentInstance implements IConsensusRequest {
return ret.toString();
}
- public static FragmentInstance deserializeFrom(ByteBuffer buffer)
- throws IllegalPathException, IOException {
+ public static FragmentInstance deserializeFrom(ByteBuffer buffer) {
FragmentInstanceId id = FragmentInstanceId.deserialize(buffer);
PlanFragment planFragment = PlanFragment.deserialize(buffer);
boolean hasTimeFilter = ReadWriteIOUtils.readBool(buffer);
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/PlanFragment.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/PlanFragment.java
index 0f00703c86..38365ec4af 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/PlanFragment.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/PlanFragment.java
@@ -19,7 +19,6 @@
package org.apache.iotdb.db.mpp.sql.planner.plan;
import org.apache.iotdb.commons.partition.RegionReplicaSet;
-import org.apache.iotdb.db.exception.metadata.IllegalPathException;
import org.apache.iotdb.db.mpp.common.PlanFragmentId;
import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNodeId;
@@ -101,12 +100,12 @@ public class PlanFragment {
root.serialize(byteBuffer);
}
- public static PlanFragment deserialize(ByteBuffer byteBuffer) throws IllegalPathException {
+ public static PlanFragment deserialize(ByteBuffer byteBuffer) {
return new PlanFragment(PlanFragmentId.deserialize(byteBuffer), deserializeHelper(byteBuffer));
}
// deserialize the plan node recursively
- public static PlanNode deserializeHelper(ByteBuffer byteBuffer) throws IllegalPathException {
+ public static PlanNode deserializeHelper(ByteBuffer byteBuffer) {
PlanNode root = PlanNodeType.deserialize(byteBuffer);
int childrenCount = byteBuffer.getInt();
for (int i = 0; i < childrenCount; i++) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanNodeType.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanNodeType.java
index 85d9f78d2f..e5cd7ff8be 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanNodeType.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanNodeType.java
@@ -18,7 +18,6 @@
*/
package org.apache.iotdb.db.mpp.sql.planner.plan.node;
-import org.apache.iotdb.db.exception.metadata.IllegalPathException;
import org.apache.iotdb.db.mpp.sql.planner.plan.node.metedata.read.DevicesSchemaScanNode;
import org.apache.iotdb.db.mpp.sql.planner.plan.node.metedata.read.ShowDevicesNode;
import org.apache.iotdb.db.mpp.sql.planner.plan.node.metedata.read.TimeSeriesSchemaScanNode;
@@ -87,7 +86,7 @@ public enum PlanNodeType {
buffer.putShort(nodeType);
}
- public static PlanNode deserialize(ByteBuffer buffer) throws IllegalPathException {
+ public static PlanNode deserialize(ByteBuffer buffer) {
short nodeType = buffer.getShort();
switch (nodeType) {
case 0:
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/metedata/read/DevicesSchemaScanNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/metedata/read/DevicesSchemaScanNode.java
index da381349ff..43be8ea836 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/metedata/read/DevicesSchemaScanNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/metedata/read/DevicesSchemaScanNode.java
@@ -89,12 +89,16 @@ public class DevicesSchemaScanNode extends SchemaScanNode {
ReadWriteIOUtils.write(hasSgCol, byteBuffer);
}
- public static DevicesSchemaScanNode deserialize(ByteBuffer byteBuffer)
- throws IllegalPathException {
+ public static DevicesSchemaScanNode deserialize(ByteBuffer byteBuffer) {
String id = ReadWriteIOUtils.readString(byteBuffer);
PlanNodeId planNodeId = new PlanNodeId(id);
String fullPath = ReadWriteIOUtils.readString(byteBuffer);
- PartialPath path = new PartialPath(fullPath);
+ PartialPath path = null;
+ try {
+ path = new PartialPath(fullPath);
+ } catch (IllegalPathException e) {
+ throw new IllegalArgumentException("Cannot deserialize DevicesSchemaScanNode", e);
+ }
int limit = ReadWriteIOUtils.readInt(byteBuffer);
int offset = ReadWriteIOUtils.readInt(byteBuffer);
boolean isPrefixPath = ReadWriteIOUtils.readBool(byteBuffer);
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java
index c7feee1a82..1e2cc49c25 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java
@@ -79,12 +79,16 @@ public class TimeSeriesSchemaScanNode extends SchemaScanNode {
ReadWriteIOUtils.write(isPrefixPath, byteBuffer);
}
- public static TimeSeriesSchemaScanNode deserialize(ByteBuffer byteBuffer)
- throws IllegalPathException {
+ public static TimeSeriesSchemaScanNode deserialize(ByteBuffer byteBuffer) {
String id = ReadWriteIOUtils.readString(byteBuffer);
PlanNodeId planNodeId = new PlanNodeId(id);
String fullPath = ReadWriteIOUtils.readString(byteBuffer);
- PartialPath path = new PartialPath(fullPath);
+ PartialPath path = null;
+ try {
+ path = new PartialPath(fullPath);
+ } catch (IllegalPathException e) {
+ throw new IllegalArgumentException("Cannot deserialize TimeSeriesSchemaScanNode", e);
+ }
String key = ReadWriteIOUtils.readString(byteBuffer);
String value = ReadWriteIOUtils.readString(byteBuffer);
int limit = ReadWriteIOUtils.readInt(byteBuffer);
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/metedata/write/CreateTimeSeriesNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/metedata/write/CreateTimeSeriesNode.java
index 45b7856878..c3e89e4fa7 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/metedata/write/CreateTimeSeriesNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/metedata/write/CreateTimeSeriesNode.java
@@ -176,8 +176,7 @@ public class CreateTimeSeriesNode extends PlanNode {
getAlias());
}
- public static CreateTimeSeriesNode deserialize(ByteBuffer byteBuffer)
- throws IllegalPathException {
+ public static CreateTimeSeriesNode deserialize(ByteBuffer byteBuffer) {
String id;
PartialPath path = null;
TSDataType dataType;
@@ -193,7 +192,11 @@ public class CreateTimeSeriesNode extends PlanNode {
int length = byteBuffer.getInt();
byte[] bytes = new byte[length];
byteBuffer.get(bytes);
- path = new PartialPath(new String(bytes));
+ try {
+ path = new PartialPath(new String(bytes));
+ } catch (IllegalPathException e) {
+ throw new IllegalArgumentException("Cannot deserialize CreateTimeSeriesNode", e);
+ }
dataType = TSDataType.values()[byteBuffer.get()];
encoding = TSEncoding.values()[byteBuffer.get()];
compressor = CompressionType.values()[byteBuffer.get()];
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/DeviceMergeNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/DeviceMergeNode.java
index ec40d5df52..d427b85809 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/DeviceMergeNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/DeviceMergeNode.java
@@ -19,7 +19,6 @@
package org.apache.iotdb.db.mpp.sql.planner.plan.node.process;
import org.apache.iotdb.commons.utils.TestOnly;
-import org.apache.iotdb.db.exception.metadata.IllegalPathException;
import org.apache.iotdb.db.mpp.sql.planner.plan.IOutputPlanNode;
import org.apache.iotdb.db.mpp.sql.planner.plan.PlanFragment;
import org.apache.iotdb.db.mpp.sql.planner.plan.node.ColumnHeader;
@@ -156,7 +155,7 @@ public class DeviceMergeNode extends ProcessNode implements IOutputPlanNode {
}
}
- public static DeviceMergeNode deserialize(ByteBuffer byteBuffer) throws IllegalPathException {
+ public static DeviceMergeNode deserialize(ByteBuffer byteBuffer) {
int orderByIndex = ReadWriteIOUtils.readInt(byteBuffer);
OrderBy orderBy = OrderBy.values()[orderByIndex];
FilterNullComponent filterNullComponent = FilterNullComponent.deserialize(byteBuffer);
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/ExchangeNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/ExchangeNode.java
index ec0cb655d6..5947fc3d21 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/ExchangeNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/process/ExchangeNode.java
@@ -20,7 +20,6 @@
package org.apache.iotdb.db.mpp.sql.planner.plan.node.process;
import org.apache.iotdb.commons.cluster.Endpoint;
-import org.apache.iotdb.db.exception.metadata.IllegalPathException;
import org.apache.iotdb.db.mpp.common.FragmentInstanceId;
import org.apache.iotdb.db.mpp.sql.planner.plan.PlanFragment;
import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNode;
@@ -87,7 +86,7 @@ public class ExchangeNode extends PlanNode {
this.upstreamPlanNodeId = nodeId;
}
- public static ExchangeNode deserialize(ByteBuffer byteBuffer) throws IllegalPathException {
+ public static ExchangeNode deserialize(ByteBuffer byteBuffer) {
FragmentSinkNode fragmentSinkNode =
(FragmentSinkNode) PlanFragment.deserializeHelper(byteBuffer);
Endpoint endPoint =
diff --git a/server/src/test/java/org/apache/iotdb/db/mpp/sql/plan/FragmentInstanceSerdeTest.java b/server/src/test/java/org/apache/iotdb/db/mpp/sql/plan/FragmentInstanceSerdeTest.java
index ad1f71af7f..3ab04fe1aa 100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/sql/plan/FragmentInstanceSerdeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/sql/plan/FragmentInstanceSerdeTest.java
@@ -42,10 +42,8 @@ import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
import org.apache.iotdb.tsfile.read.filter.GroupByFilter;
import org.apache.iotdb.tsfile.read.filter.operator.Gt;
-
import org.junit.Test;
-import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
@@ -54,7 +52,7 @@ import static org.junit.Assert.assertEquals;
public class FragmentInstanceSerdeTest {
@Test
- public void TestSerializeAndDeserializeForTree1() throws IllegalPathException, IOException {
+ public void TestSerializeAndDeserializeForTree1() throws IllegalPathException {
FragmentInstance fragmentInstance =
new FragmentInstance(
new PlanFragment(new PlanFragmentId("test", -1), constructPlanNodeTree()),
@@ -74,7 +72,7 @@ public class FragmentInstanceSerdeTest {
}
@Test
- public void TestSerializeAndDeserializeWithNullFilter() throws IllegalPathException, IOException {
+ public void TestSerializeAndDeserializeWithNullFilter() throws IllegalPathException {
FragmentInstance fragmentInstance =
new FragmentInstance(
new PlanFragment(new PlanFragmentId("test2", 1), constructPlanNodeTree()),