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 8ebe2764805 Change UDF creation error code and avoid logging thread
stack in warn log (#17467)
8ebe2764805 is described below
commit 8ebe2764805685c140e72c53a901fd724fefa5af
Author: Jackie Tien <[email protected]>
AuthorDate: Tue Apr 14 15:27:36 2026 +0800
Change UDF creation error code and avoid logging thread stack in warn log
(#17467)
---
.../src/main/java/org/apache/iotdb/rpc/TSStatusCode.java | 1 +
.../java/org/apache/iotdb/confignode/manager/UDFManager.java | 3 +++
.../java/org/apache/iotdb/confignode/persistence/UDFInfo.java | 11 +++++++----
.../db/queryengine/plan/execution/config/ConfigExecution.java | 4 ++++
.../execution/config/executor/ClusterConfigTaskExecutor.java | 7 +------
5 files changed, 16 insertions(+), 10 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 53c23626b13..f9e750f4012 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
@@ -230,6 +230,7 @@ public enum TSStatusCode {
CREATE_UDF_ERROR(1204),
DROP_UDF_ERROR(1205),
EXECUTE_UDF_ERROR(1206),
+ UDF_ALREADY_EXISTS(1207),
// Trigger
CREATE_TRIGGER_ERROR(1300),
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/UDFManager.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/UDFManager.java
index 6c6477e2418..cfe21f9f37b 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/UDFManager.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/UDFManager.java
@@ -24,6 +24,7 @@ import org.apache.iotdb.common.rpc.thrift.Model;
import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.conf.IoTDBConstant;
+import org.apache.iotdb.commons.exception.IoTDBRuntimeException;
import org.apache.iotdb.commons.udf.UDFInformation;
import org.apache.iotdb.commons.udf.UDFType;
import org.apache.iotdb.confignode.client.async.CnToDnAsyncRequestType;
@@ -137,6 +138,8 @@ public class UDFManager {
LOGGER.info("Start to activate UDF [{}] in UDF_Table on Config Nodes",
udfName);
return configManager.getConsensusManager().write(new
UpdateFunctionPlan(udfInformation));
+ } catch (IoTDBRuntimeException e) {
+ return new TSStatus(e.getErrorCode()).setMessage(e.getMessage());
} catch (Exception e) {
LOGGER.warn(e.getMessage(), e);
return new TSStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR.getStatusCode())
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/UDFInfo.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/UDFInfo.java
index 002813038cf..308a442f765 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/UDFInfo.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/UDFInfo.java
@@ -21,6 +21,7 @@ package org.apache.iotdb.confignode.persistence;
import org.apache.iotdb.common.rpc.thrift.Model;
import org.apache.iotdb.common.rpc.thrift.TSStatus;
+import org.apache.iotdb.commons.exception.IoTDBRuntimeException;
import org.apache.iotdb.commons.executable.ExecutableManager;
import org.apache.iotdb.commons.snapshot.SnapshotProcessor;
import org.apache.iotdb.commons.udf.UDFInformation;
@@ -96,15 +97,17 @@ public class UDFInfo implements SnapshotProcessor {
throws UDFManagementException {
if (udfTable.containsUDF(model, udfName)
&& udfTable.getUDFInformation(model, udfName).isAvailable()) {
- throw new UDFManagementException(
- String.format("Failed to create UDF [%s], the same name UDF has been
created", udfName));
+ throw new IoTDBRuntimeException(
+ String.format("Failed to create UDF [%s], the same name UDF has been
created", udfName),
+ TSStatusCode.UDF_ALREADY_EXISTS.getStatusCode());
}
if (existedJarToMD5.containsKey(jarName) &&
!existedJarToMD5.get(jarName).equals(jarMD5)) {
- throw new UDFManagementException(
+ throw new IoTDBRuntimeException(
String.format(
"Failed to create UDF [%s], the same name Jar [%s] but different
MD5 [%s] has existed",
- udfName, jarName, jarMD5));
+ udfName, jarName, jarMD5),
+ TSStatusCode.UDF_ALREADY_EXISTS.getStatusCode());
}
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
index 2b70a667be9..75f5ddd25bf 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/ConfigExecution.java
@@ -72,6 +72,10 @@ public class ConfigExecution implements IQueryExecution {
TSStatusCode.DATABASE_ALREADY_EXISTS.getStatusCode(),
TSStatusCode.DATABASE_CONFLICT.getStatusCode(),
TSStatusCode.DATABASE_CONFIG_ERROR.getStatusCode(),
+ TSStatusCode.UDF_LOAD_CLASS_ERROR.getStatusCode(),
+ TSStatusCode.DROP_UDF_ERROR.getStatusCode(),
+ TSStatusCode.UDF_DOWNLOAD_ERROR.getStatusCode(),
+ TSStatusCode.UDF_ALREADY_EXISTS.getStatusCode(),
TSStatusCode.PATH_NOT_EXIST.getStatusCode(),
TSStatusCode.MEASUREMENT_ALREADY_EXISTS_IN_TEMPLATE.getStatusCode(),
TSStatusCode.SCHEMA_QUOTA_EXCEEDED.getStatusCode(),
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
index cf404e8d57b..5325560301c 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/executor/ClusterConfigTaskExecutor.java
@@ -604,7 +604,7 @@ public class ClusterConfigTaskExecutor implements
IConfigTaskExecutor {
String.format(
"Failed to create UDF [%s], the given function name
conflicts with the built-in function name.",
udfName.toUpperCase()),
- TSStatusCode.CREATE_UDF_ERROR.getStatusCode()));
+ TSStatusCode.UDF_ALREADY_EXISTS.getStatusCode()));
return future;
}
try (ConfigNodeClient client =
@@ -738,11 +738,6 @@ public class ClusterConfigTaskExecutor implements
IConfigTaskExecutor {
final TSStatus executionStatus =
client.createFunction(tCreateFunctionReq);
if (TSStatusCode.SUCCESS_STATUS.getStatusCode() !=
executionStatus.getCode()) {
- LOGGER.warn(
- "Failed to create function {}({}) because {}",
- udfName,
- className,
- executionStatus.getMessage());
future.setException(new IoTDBException(executionStatus));
} else {
future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS));