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;

Reply via email to