This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 8a3e6644d4f61604c17e7a71f2639fbb4b941c93
Author: zhangstar333 <87313068+zhangstar...@users.noreply.github.com>
AuthorDate: Mon Feb 19 17:19:05 2024 +0800

    [fix](udf) fix java-udf coredump as get env return nullptr (#30986)
---
 be/src/runtime/fold_constant_executor.cpp              |  3 ++-
 be/src/vec/functions/function_java_udf.cpp             |  2 +-
 be/src/vec/functions/function_java_udf.h               | 18 ++++++++----------
 .../rules/expression/rules/FoldConstantRuleOnBE.java   |  2 ++
 4 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/be/src/runtime/fold_constant_executor.cpp 
b/be/src/runtime/fold_constant_executor.cpp
index de1fd046882..8a19ca1b35c 100644
--- a/be/src/runtime/fold_constant_executor.cpp
+++ b/be/src/runtime/fold_constant_executor.cpp
@@ -122,7 +122,8 @@ Status FoldConstantExecutor::fold_constant_vexpr(const 
TFoldConstantParams& para
         }
         expr_result_map->insert({m.first, pexpr_result_map});
     }
-
+    //TODO: will be delete the debug log after find problem of timeout.
+    LOG(INFO) << "finish fold_query_id: " << query_id_string();
     return Status::OK();
 }
 
diff --git a/be/src/vec/functions/function_java_udf.cpp 
b/be/src/vec/functions/function_java_udf.cpp
index 0ae649b768d..dc367486dfc 100644
--- a/be/src/vec/functions/function_java_udf.cpp
+++ b/be/src/vec/functions/function_java_udf.cpp
@@ -127,7 +127,7 @@ Status JavaFunctionCall::close(FunctionContext* context,
     // JNIContext own some resource and its release method depend on 
JavaFunctionCall
     // has to release the resource before JavaFunctionCall is deconstructed.
     if (jni_ctx) {
-        jni_ctx->close();
+        RETURN_IF_ERROR(jni_ctx->close());
     }
     return Status::OK();
 }
diff --git a/be/src/vec/functions/function_java_udf.h 
b/be/src/vec/functions/function_java_udf.h
index f930346a72d..e507392184f 100644
--- a/be/src/vec/functions/function_java_udf.h
+++ b/be/src/vec/functions/function_java_udf.h
@@ -126,29 +126,27 @@ private:
 
         JniContext() = default;
 
-        void close() {
+        Status close() {
             if (!open_successes) {
                 LOG_WARNING("maybe open failed, need check the reason");
-                return; //maybe open failed, so can't call some jni
+                return Status::OK(); //maybe open failed, so can't call some 
jni
             }
             if (is_closed) {
-                return;
+                return Status::OK();
             }
             VLOG_DEBUG << "Free resources for JniContext";
-            JNIEnv* env;
+            JNIEnv* env = nullptr;
             Status status = JniUtil::GetJNIEnv(&env);
-            if (!status.ok()) {
+            if (!status.ok() || env == nullptr) {
                 LOG(WARNING) << "errors while get jni env " << status;
-                return;
+                return status;
             }
             env->CallNonvirtualVoidMethodA(executor, executor_cl, 
executor_close_id, nullptr);
             env->DeleteGlobalRef(executor);
             env->DeleteGlobalRef(executor_cl);
-            Status s = JniUtil::GetJniExceptionMsg(env);
-            if (!s.ok()) {
-                LOG(WARNING) << s;
-            }
+            RETURN_IF_ERROR(JniUtil::GetJniExceptionMsg(env));
             is_closed = true;
+            return Status::OK();
         }
     };
 };
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
index 681fa4b56cd..a254f9b4d43 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
@@ -181,6 +181,8 @@ public class FoldConstantRuleOnBE extends 
AbstractExpressionRewriteRule {
             tParams.setQueryOptions(tQueryOptions);
             tParams.setQueryId(context.queryId());
 
+            // TODO: will be delete the debug log after find problem of 
timeout.
+            LOG.info("fold query {} ", DebugUtil.printId(context.queryId()));
             Future<PConstantExprResult> future =
                     
BackendServiceProxy.getInstance().foldConstantExpr(brpcAddress, tParams);
             PConstantExprResult result = future.get(5, TimeUnit.SECONDS);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to