This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch PrintUDTFStack in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 8b8c41337c760ae99efa9d882218127ac4539def Author: JackieTien97 <[email protected]> AuthorDate: Thu Jul 31 15:23:23 2025 +0800 Print thread stack for udf execution error --- .../db/queryengine/execution/fragment/FragmentInstanceManager.java | 5 ++++- .../operator/process/function/TableFunctionLeafOperator.java | 4 ++-- .../org/apache/iotdb/commons/exception/IoTDBRuntimeException.java | 7 +++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java index 89d50ce0264..1d17784ffa5 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java @@ -207,7 +207,10 @@ public class FragmentInstanceManager { } else if (t instanceof UDFException) { stateMachine.failed( new IoTDBRuntimeException( - t.getMessage(), TSStatusCode.EXECUTE_UDF_ERROR.getStatusCode(), true)); + t.getMessage(), + TSStatusCode.EXECUTE_UDF_ERROR.getStatusCode(), + t, + true)); } else { logger.warn("error when create FragmentInstanceExecution.", t); stateMachine.failed(t); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/function/TableFunctionLeafOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/function/TableFunctionLeafOperator.java index a52e12358bb..29e934c18ec 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/function/TableFunctionLeafOperator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/function/TableFunctionLeafOperator.java @@ -77,7 +77,7 @@ public class TableFunctionLeafOperator implements ProcessOperator { processor.process(columnBuilders); } catch (Exception e) { throw new IoTDBRuntimeException( - e.getMessage(), TSStatusCode.EXECUTE_UDF_ERROR.getStatusCode(), true); + e.getMessage(), TSStatusCode.EXECUTE_UDF_ERROR.getStatusCode(), e, true); } return buildTsBlock(columnBuilders); } @@ -104,7 +104,7 @@ public class TableFunctionLeafOperator implements ProcessOperator { processor.beforeDestroy(); } catch (Exception e) { throw new IoTDBRuntimeException( - e.getMessage(), TSStatusCode.EXECUTE_UDF_ERROR.getStatusCode(), true); + e.getMessage(), TSStatusCode.EXECUTE_UDF_ERROR.getStatusCode(), e, true); } } diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/IoTDBRuntimeException.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/IoTDBRuntimeException.java index 3d58f7d606b..160ae8b6d82 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/IoTDBRuntimeException.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/exception/IoTDBRuntimeException.java @@ -40,6 +40,13 @@ public class IoTDBRuntimeException extends RuntimeException { this.isUserException = isUserException; } + public IoTDBRuntimeException( + String message, int errorCode, Throwable cause, boolean isUserException) { + super(message, cause); + this.errorCode = errorCode; + this.isUserException = isUserException; + } + public IoTDBRuntimeException(String message, Throwable cause, int errorCode) { super(message, cause); this.errorCode = errorCode;
