diff --git a/be/src/vec/aggregate_functions/aggregate_function_java_udaf.h b/be/src/vec/aggregate_functions/aggregate_function_java_udaf.h index 44f1889efd..7740c809de 100644 --- a/be/src/vec/aggregate_functions/aggregate_function_java_udaf.h +++ b/be/src/vec/aggregate_functions/aggregate_function_java_udaf.h @@ -203,9 +203,8 @@ public: jobject output_map = JniUtil::convert_to_java_map(env, output_params); long output_address = env->CallLongMethod(executor_obj, executor_get_value_id, place, output_map); - RETURN_IF_ERROR(JniUtil::GetJniExceptionMsg(env)); env->DeleteLocalRef(output_map); - + RETURN_IF_ERROR(JniUtil::GetJniExceptionMsg(env)); return JniConnector::fill_block(&output_block, {0}, output_address); } @@ -288,16 +287,12 @@ public: void create(AggregateDataPtr __restrict place) const override { new (place) Data(argument_types.size()); if (_first_created) { - Status status = Status::OK(); - SAFE_CREATE(RETURN_IF_STATUS_ERROR(status, - this->data(place).init_udaf(_fn, _local_location)), - { - static_cast(this->data(place).destroy()); - this->data(place).~Data(); - }); + Status status = this->data(place).init_udaf(_fn, _local_location); _first_created = false; _exec_place = place; if (UNLIKELY(!status.ok())) { + static_cast(this->data(place).destroy()); + this->data(place).~Data(); throw doris::Exception(ErrorCode::INTERNAL_ERROR, status.to_string()); } } diff --git a/be/src/vec/functions/function_java_udf.cpp b/be/src/vec/functions/function_java_udf.cpp index 63985f1964..cff050794f 100644 --- a/be/src/vec/functions/function_java_udf.cpp +++ b/be/src/vec/functions/function_java_udf.cpp @@ -114,10 +114,9 @@ Status JavaFunctionCall::execute_impl(FunctionContext* context, Block& block, jobject output_map = JniUtil::convert_to_java_map(env, output_params); long output_address = env->CallLongMethod(jni_ctx->executor, jni_ctx->executor_evaluate_id, input_map, output_map); - RETURN_IF_ERROR(JniUtil::GetJniExceptionMsg(env)); env->DeleteLocalRef(input_map); env->DeleteLocalRef(output_map); - + RETURN_IF_ERROR(JniUtil::GetJniExceptionMsg(env)); return JniConnector::fill_block(&block, {result}, output_address); }