This is an automated email from the ASF dual-hosted git repository.
jackietien 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 d3099ff1eb8 Change Error Code from 301 and 305 to
NO_AVAILABLE_REPLICA(1012) while all replicas are unavailable
d3099ff1eb8 is described below
commit d3099ff1eb8e9a9d19b69714c5f4c400ec4d7f48
Author: Jackie Tien <[email protected]>
AuthorDate: Mon May 26 11:54:06 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);