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

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new d62a2b20911 [fix](jni)fix jni use timezone_obj get timezone be core. 
(#41956)
d62a2b20911 is described below

commit d62a2b209114e58936c46027b892116c125fdebf
Author: daidai <[email protected]>
AuthorDate: Thu Oct 17 10:56:16 2024 +0800

    [fix](jni)fix jni use timezone_obj get timezone be core. (#41956)
    
    This PR #40225 try to pass time zone info from BE to JNI, and it use
    `_state->timezone_obj().name()`
    to get the timezone name.
    But when we do some rolling upgrade of BE, it may coredump like:
    
    ```
    *** SIGSEGV address not mapped to object (@0x610) received by PID 72661 
(TID 73538 OR 0x7f2e898d1640) from PID 1552; stack trace: ***
     0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, 
siginfo_t*, void*) at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/common/signal_handler.h:421
     1# os::Linux::chained_handler(int, siginfo_t*, void*) in 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
     2# JVM_handle_linux_signal in 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
     3# signalHandler(int, siginfo_t*, void*) in 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
     4# 0x00007F3070D3E520 in /lib/x86_64-linux-gnu/libc.so.6
     5# cctz::time_zone::name[abi:cxx11]() const in 
/mnt/hdd01/ci/compatibility-deploy/be/lib/doris_be
     6# doris::vectorized::JniConnector::open(doris::RuntimeState*, 
doris::RuntimeProfile*) at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/vec/exec/jni_connector.cpp:87
     7# doris::vectorized::AvroJNIReader::init_fetch_table_schema_reader() at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/vec/exec/format/avro/avro_jni_reader.cpp:119
     8# std::_Function_handler::_M_invoke(std::_Any_data const&) at 
/var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
     9# doris::WorkThreadPool::work_thread(int) at 
/home/zcp/repo_center/doris_branch-2.1/doris/be/src/util/work_thread_pool.hpp:159
    10# execute_native_thread_routine at 
../../../../../libstdc++-v3/src/c++11/thread.cc:84
    11# start_thread at ./nptl/pthread_create.c:442
    12# 0x00007F3070E22850 at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:83
    172.20.50.206 last coredump sql: 2024-10-13 04:12:23,985 [query]
    ```
    
    This PR use another method: `_state->timezone()`, which just return a
    string, instead of reading and initializing
    time zone info file, to avoid potential coredump.
---
 be/src/vec/exec/jni_connector.cpp                                     | 2 +-
 .../maxcompute/test_external_catalog_maxcompute.groovy                | 4 ++--
 .../external_table_p2/maxcompute/test_max_compute_all_type.groovy     | 4 ++--
 .../external_table_p2/maxcompute/test_max_compute_complex_type.groovy | 4 ++--
 4 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/be/src/vec/exec/jni_connector.cpp 
b/be/src/vec/exec/jni_connector.cpp
index 071d36313d2..f06524944ff 100644
--- a/be/src/vec/exec/jni_connector.cpp
+++ b/be/src/vec/exec/jni_connector.cpp
@@ -84,7 +84,7 @@ Status JniConnector::open(RuntimeState* state, 
RuntimeProfile* profile) {
         return Status::InternalError("Failed to get/create JVM");
     }
     SCOPED_TIMER(_open_scanner_time);
-    _scanner_params.emplace("time_zone", _state->timezone_obj().name());
+    _scanner_params.emplace("time_zone", _state->timezone());
     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);
diff --git 
a/regression-test/suites/external_table_p2/maxcompute/test_external_catalog_maxcompute.groovy
 
b/regression-test/suites/external_table_p2/maxcompute/test_external_catalog_maxcompute.groovy
index ffb633c7b72..0539dde5981 100644
--- 
a/regression-test/suites/external_table_p2/maxcompute/test_external_catalog_maxcompute.groovy
+++ 
b/regression-test/suites/external_table_p2/maxcompute/test_external_catalog_maxcompute.groovy
@@ -320,8 +320,8 @@
 suite("test_external_catalog_maxcompute", 
"p2,external,maxcompute,external_remote,external_remote_maxcompute") {
     String enabled = context.config.otherConfigs.get("enableMaxComputeTest")
     if (enabled != null && enabled.equalsIgnoreCase("true")) {
-        String ak = context.config.otherConfigs.get("aliYunAk")
-        String sk = context.config.otherConfigs.get("aliYunSk");
+        String ak = context.config.otherConfigs.get("ak")
+        String sk = context.config.otherConfigs.get("sk");
         String mc_db = "mc_datalake"
         String mc_catalog_name = "test_external_mc_catalog"
 
diff --git 
a/regression-test/suites/external_table_p2/maxcompute/test_max_compute_all_type.groovy
 
b/regression-test/suites/external_table_p2/maxcompute/test_max_compute_all_type.groovy
index 875f3b97c3a..f1405c441ed 100644
--- 
a/regression-test/suites/external_table_p2/maxcompute/test_max_compute_all_type.groovy
+++ 
b/regression-test/suites/external_table_p2/maxcompute/test_max_compute_all_type.groovy
@@ -315,8 +315,8 @@ select * from mc_all_types;
 suite("test_max_compute_all_type", 
"p2,external,maxcompute,external_remote,external_remote_maxcompute") {
     String enabled = context.config.otherConfigs.get("enableMaxComputeTest")
     if (enabled != null && enabled.equalsIgnoreCase("true")) {
-        String ak = context.config.otherConfigs.get("aliYunAk")
-        String sk = context.config.otherConfigs.get("aliYunSk")
+        String ak = context.config.otherConfigs.get("ak")
+        String sk = context.config.otherConfigs.get("sk")
         String mc_catalog_name = "test_max_compute_all_type"
         sql """drop catalog if exists ${mc_catalog_name} """
         
diff --git 
a/regression-test/suites/external_table_p2/maxcompute/test_max_compute_complex_type.groovy
 
b/regression-test/suites/external_table_p2/maxcompute/test_max_compute_complex_type.groovy
index 764f0398f50..61ed4ef8ff6 100644
--- 
a/regression-test/suites/external_table_p2/maxcompute/test_max_compute_complex_type.groovy
+++ 
b/regression-test/suites/external_table_p2/maxcompute/test_max_compute_complex_type.groovy
@@ -160,8 +160,8 @@
 suite("test_max_compute_complex_type", 
"p2,external,maxcompute,external_remote,external_remote_maxcompute") {
     String enabled = context.config.otherConfigs.get("enableMaxComputeTest")
     if (enabled != null && enabled.equalsIgnoreCase("true")) {
-        String ak = context.config.otherConfigs.get("aliYunAk")
-        String sk = context.config.otherConfigs.get("aliYunSk")
+        String ak = context.config.otherConfigs.get("ak")
+        String sk = context.config.otherConfigs.get("sk")
         String mc_catalog_name = "test_max_compute_complex_type"
         sql """drop catalog if exists ${mc_catalog_name} """
         sql """


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to