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

Reply via email to