From 363721e066ec5e858c16d3ff37e599c1366489bd Mon Sep 17 00:00:00 2001 From: zhangstar333 <87313068+zhangstar333@users.noreply.github.com> Date: Sat, 9 Dec 2023 11:00:30 +0800 Subject: [PATCH] [Bug](udf) java-udf function open failed cause BE core dump #28063 when the java-udf open function failed, and some JNI have not set, so in close function can't call jni. --- be/src/vec/functions/function_java_udf.cpp | 1 + be/src/vec/functions/function_java_udf.h | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/be/src/vec/functions/function_java_udf.cpp b/be/src/vec/functions/function_java_udf.cpp index 751bbdbe55..0ae649b768 100644 --- a/be/src/vec/functions/function_java_udf.cpp +++ b/be/src/vec/functions/function_java_udf.cpp @@ -83,6 +83,7 @@ Status JavaFunctionCall::open(FunctionContext* context, FunctionContext::Functio } RETURN_ERROR_IF_EXC(env); RETURN_IF_ERROR(JniUtil::LocalToGlobalRef(env, jni_ctx->executor, &jni_ctx->executor)); + jni_ctx->open_successes = true; } return Status::OK(); } diff --git a/be/src/vec/functions/function_java_udf.h b/be/src/vec/functions/function_java_udf.h index a30a93b355..bb493aa7ed 100644 --- a/be/src/vec/functions/function_java_udf.h +++ b/be/src/vec/functions/function_java_udf.h @@ -123,10 +123,15 @@ private: jmethodID executor_close_id; jobject executor = nullptr; bool is_closed = false; + bool open_successes = false; JniContext() = default; void close() { + if (!open_successes) { + LOG_WARNING("maybe open failed, need check the reason"); + return; //maybe open failed, so can't call some jni + } if (is_closed) { return; }