This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch 0241 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 6d8bffcde5b592875ca5ca56e33f76ef8704b543 Author: JackieTien97 <[email protected]> AuthorDate: Mon May 26 11:16:42 2025 +0800 Change Error Code from 301 and 305 to NO_AVAILABLE_REPLICA(1012) while all replicas are unavailable --- .../service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java | 1 + .../plan/planner/plan/AbstractFragmentParallelPlanner.java | 5 ++++- .../src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java index 3c61ea03326..7c212bd9548 100644 --- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java +++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java @@ -193,6 +193,7 @@ public enum TSStatusCode { GET_CLUSTER_ID_ERROR(1009), CAN_NOT_CONNECT_CONFIGNODE(1010), CAN_NOT_CONNECT_AINODE(1011), + NO_AVAILABLE_REPLICA(1012), // Sync, Load TsFile LOAD_FILE_ERROR(1100), diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/AbstractFragmentParallelPlanner.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/AbstractFragmentParallelPlanner.java index cbad76a79dd..dbf81451311 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/AbstractFragmentParallelPlanner.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/AbstractFragmentParallelPlanner.java @@ -22,6 +22,7 @@ package org.apache.iotdb.db.queryengine.plan.planner.plan; import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation; import org.apache.iotdb.common.rpc.thrift.TEndPoint; import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet; +import org.apache.iotdb.commons.exception.IoTDBRuntimeException; import org.apache.iotdb.commons.partition.QueryExecutor; import org.apache.iotdb.commons.partition.StorageExecutor; import org.apache.iotdb.db.conf.IoTDBDescriptor; @@ -33,6 +34,7 @@ import org.apache.iotdb.db.queryengine.plan.planner.exceptions.ReplicaSetUnreach import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId; import org.apache.iotdb.db.queryengine.plan.relational.planner.distribute.TableModelQueryFragmentPlanner; +import org.apache.iotdb.rpc.TSStatusCode; import org.apache.commons.collections4.CollectionUtils; import org.apache.tsfile.utils.Pair; @@ -125,7 +127,8 @@ public abstract class AbstractFragmentParallelPlanner implements IFragmentParall String.format( "All replicas for region[%s] are not available in these DataNodes[%s]", regionReplicaSet.getRegionId(), regionReplicaSet.getDataNodeLocations()); - throw new IllegalArgumentException(errorMsg); + throw new IoTDBRuntimeException( + errorMsg, TSStatusCode.NO_AVAILABLE_REPLICA.getStatusCode(), true); } if (regionReplicaSet.getDataNodeLocationsSize() != availableDataNodes.size()) { LOGGER.info("available replicas: {}", availableDataNodes); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java index 00df318bdf2..d8497e077d2 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java @@ -116,7 +116,8 @@ public class ErrorHandlingUtils { || status.getCode() == TSStatusCode.COLUMN_ALREADY_EXISTS.getStatusCode() || status.getCode() == TSStatusCode.UDF_LOAD_CLASS_ERROR.getStatusCode() || status.getCode() == TSStatusCode.PLAN_FAILED_NETWORK_PARTITION.getStatusCode() - || status.getCode() == TSStatusCode.SYNC_CONNECTION_ERROR.getStatusCode()) { + || status.getCode() == TSStatusCode.SYNC_CONNECTION_ERROR.getStatusCode() + || status.getCode() == TSStatusCode.NO_AVAILABLE_REPLICA.getStatusCode()) { LOGGER.info(message); } else { LOGGER.warn(message, e);
