From bb50f2d90af34154aec791597ffb79403b65b761 Mon Sep 17 00:00:00 2001 From: TieweiFang Date: Fri, 12 Jul 2024 11:22:01 +0800 Subject: [PATCH 1/2] fix --- be/src/vec/exec/jni_connector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/be/src/vec/exec/jni_connector.cpp b/be/src/vec/exec/jni_connector.cpp index 66b01bbe847319..105473c5c5738b 100644 --- a/be/src/vec/exec/jni_connector.cpp +++ b/be/src/vec/exec/jni_connector.cpp @@ -87,8 +87,8 @@ Status JniConnector::open(RuntimeState* state, RuntimeProfile* profile) { RETURN_IF_ERROR(_init_jni_scanner(env, batch_size)); // Call org.apache.doris.common.jni.JniScanner#open env->CallVoidMethod(_jni_scanner_obj, _jni_scanner_open); - _scanner_opened = true; RETURN_ERROR_IF_EXC(env); + _scanner_opened = true; return Status::OK(); } From 2fc0fd7e7e0af5028b1257efe40c58a5760e129e Mon Sep 17 00:00:00 2001 From: TieweiFang Date: Fri, 12 Jul 2024 17:51:56 +0800 Subject: [PATCH 2/2] fix 2 --- be/src/vec/exec/jni_connector.cpp | 11 +++++++++-- .../trinoconnector/TrinoConnectorJniScanner.java | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/be/src/vec/exec/jni_connector.cpp b/be/src/vec/exec/jni_connector.cpp index 105473c5c5738b..0c2485ada3bbed 100644 --- a/be/src/vec/exec/jni_connector.cpp +++ b/be/src/vec/exec/jni_connector.cpp @@ -87,8 +87,8 @@ Status JniConnector::open(RuntimeState* state, RuntimeProfile* profile) { RETURN_IF_ERROR(_init_jni_scanner(env, batch_size)); // Call org.apache.doris.common.jni.JniScanner#open env->CallVoidMethod(_jni_scanner_obj, _jni_scanner_open); - RETURN_ERROR_IF_EXC(env); _scanner_opened = true; + RETURN_ERROR_IF_EXC(env); return Status::OK(); } @@ -154,6 +154,13 @@ Status JniConnector::get_table_schema(std::string& table_schema_str) { std::map JniConnector::get_statistics(JNIEnv* env) { jobject metrics = env->CallObjectMethod(_jni_scanner_obj, _jni_scanner_get_statistics); + jthrowable exc = (env)->ExceptionOccurred(); + if (exc != nullptr) { + LOG(WARNING) << "get_statistics has error: " + << JniUtil::GetJniExceptionMsg(env).to_string(); + env->DeleteLocalRef(metrics); + return std::map {}; + } std::map result = JniUtil::convert_to_cpp_map(env, metrics); env->DeleteLocalRef(metrics); return result; @@ -163,7 +170,7 @@ Status JniConnector::close() { if (!_closed) { JNIEnv* env = nullptr; RETURN_IF_ERROR(JniUtil::GetJNIEnv(&env)); - if (_scanner_opened) { + if (_scanner_opened && _jni_scanner_obj != nullptr) { // _fill_block may be failed and returned, we should release table in close. // org.apache.doris.common.jni.JniScanner#releaseTable is idempotent env->CallVoidMethod(_jni_scanner_obj, _jni_scanner_release_table); diff --git a/fe/be-java-extensions/trino-connector-scanner/src/main/java/org/apache/doris/trinoconnector/TrinoConnectorJniScanner.java b/fe/be-java-extensions/trino-connector-scanner/src/main/java/org/apache/doris/trinoconnector/TrinoConnectorJniScanner.java index 3e050fc923f4ba..af20668081d0c7 100644 --- a/fe/be-java-extensions/trino-connector-scanner/src/main/java/org/apache/doris/trinoconnector/TrinoConnectorJniScanner.java +++ b/fe/be-java-extensions/trino-connector-scanner/src/main/java/org/apache/doris/trinoconnector/TrinoConnectorJniScanner.java @@ -132,6 +132,7 @@ public TrinoConnectorJniScanner(int batchSize, Map params) { catalogNameString = params.get("catalog_name"); super.batchSize = batchSize; super.fields = params.get("required_fields").split(","); + appendDataTimeNs = new long[fields.length]; connectorSplitString = params.get("trino_connector_split"); connectorTableHandleString = params.get("trino_connector_table_handle");