From 821d504782e05b90e24eab4215b4efb86b948296 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Tue, 18 Jul 2023 06:21:42 +0000 Subject: [PATCH 01/21] chore: dlopen with RTLD_LOCAL explicitly --- hybridse/src/udf/dynamic_lib_manager.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hybridse/src/udf/dynamic_lib_manager.cc b/hybridse/src/udf/dynamic_lib_manager.cc index c6a034247cd..d75f213d3b7 100644 --- a/hybridse/src/udf/dynamic_lib_manager.cc +++ b/hybridse/src/udf/dynamic_lib_manager.cc @@ -45,7 +45,7 @@ base::Status DynamicLibManager::ExtractFunction(const std::string& name, bool is } } if (!so_handle) { - void* handle = dlopen(file.c_str(), RTLD_LAZY); + void* handle = dlopen(file.c_str(), RTLD_LAZY | RTLD_LOCAL); if (handle == nullptr) { std::string err_msg; err_msg = "can not open the dynamic library: " + file + ", error: " + dlerror() + ", try to use abs path"; @@ -57,7 +57,7 @@ base::Status DynamicLibManager::ExtractFunction(const std::string& name, bool is return {common::kExternalUDFError, err_msg}; } - handle = dlopen(abs_path_buff, RTLD_LAZY); + handle = dlopen(abs_path_buff, RTLD_LAZY | RTLD_LOCAL); if (handle == nullptr) { err_msg.append("dlopen abs path failed, error: ").append(dlerror()); return {common::kExternalUDFError, err_msg}; From ed839cd416cc29df730d04bf692e7ccdb9bbefa1 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Tue, 18 Jul 2023 10:31:55 +0000 Subject: [PATCH 02/21] build: install openmldb with RPATH LD_LIBRARY_PATH is evil, removing. Replace with the - $ORIGIN token for linux - or @rpath for darwin --- CMakeLists.txt | 10 +++++++++- hybridse/CMakeLists.txt | 2 +- onebox/start_onebox.sh | 3 +++ release/bin/start.sh | 3 --- src/CMakeLists.txt | 4 ++++ src/sdk/CMakeLists.txt | 3 +++ 6 files changed, 20 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 394ca89e329..29c2f38e972 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.13) +cmake_minimum_required (VERSION 3.16) if (POLICY CMP0068) cmake_policy(SET CMP0068 NEW) endif () @@ -97,6 +97,8 @@ option(COVERAGE_NO_DEPS "Coverage without test deps, should ensure test built" O option(SANITIZER_ENABLE "Enable AddressSanitizer in Debug mode" OFF) # add_library can reply on this variable # see https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html#variable:BUILD_SHARED_LIBS +# WARN: installed binaries like openmldb may not runnable since the INSTALL_RPATH is not updated acorrespondingly +# Solution: 1. update INSTALL_RPATH for install target 2. install dependent shared libraries option(BUILD_SHARED_LIBS "Enable build shared Libraries instead static" OFF) option(TESTING_ENABLE_STRIP "Strip test binary that may help reduce storage space" OFF) @@ -140,6 +142,11 @@ include(farmhash) if (CMAKE_SYSTEM_NAME STREQUAL "Linux") set(OS_LIB ${CMAKE_THREAD_LIBS_INIT} rt) set(BRPC_LIBS ${BRPC_LIBRARY} ${Protobuf_LIBRARIES} ${GLOG_LIBRARY} ${GFLAGS_LIBRARY} ${UNWIND_LIBRARY} ${OPENSSL_LIBRARIES} ${LEVELDB_LIBRARY} ${Z_LIBRARY} ${SNAPPY_LIBRARY} dl pthread ${OS_LIB}) + # OPENMLDB_INSTALL_RPATH + # custom RPATH tag for necessary install binaries (like bin/openmldb) + # relative to binary location so any install location works, binary is + # by convention installed to 'bin/' directory, search to '/../$LIB' and '/../udf' + set(OPENMLDB_INSTALL_RPATH '$ORIGIN/../$LIB' '$ORIGIN/../udf') elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin") set(OS_LIB ${CMAKE_THREAD_LIBS_INIT} @@ -153,6 +160,7 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin") "-Wl,-U,_ProfilerStart" "-Wl,-U,_ProfilerStop") set(BRPC_LIBS ${BRPC_LIBRARY} ${Protobuf_LIBRARIES} ${GLOG_LIBRARY} ${GFLAGS_LIBRARY} ${OPENSSL_LIBRARIES} ${LEVELDB_LIBRARY} ${Z_LIBRARY} ${SNAPPY_LIBRARY} dl pthread ${OS_LIB}) + set(OPENMLDB_INSTALL_RPATH '@loader_path/../lib' '@loader_path/../udf') endif () if (SANITIZER_ENABLE) diff --git a/hybridse/CMakeLists.txt b/hybridse/CMakeLists.txt index a0fd5478d93..576a0b75bd3 100644 --- a/hybridse/CMakeLists.txt +++ b/hybridse/CMakeLists.txt @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -cmake_minimum_required(VERSION 3.13) +cmake_minimum_required(VERSION 3.16) if (POLICY CMP0068) cmake_policy(SET CMP0068 NEW) diff --git a/onebox/start_onebox.sh b/onebox/start_onebox.sh index 639e409b37c..734fc7dd0ca 100755 --- a/onebox/start_onebox.sh +++ b/onebox/start_onebox.sh @@ -28,6 +28,9 @@ if [ ! -r "$OPENMLDB_BIN" ]; then exit 1 fi +# enable dynamic loading searches the 'udf' directory +mkdir -p "${OPENMLDB_BIN}/../udf" + # the subdirectory can be set through the environment variable ONEBOX_WORKDIR WORKSPACE=${ONEBOX_WORKDIR:-onebox/workspace} mkdir -p "$WORKSPACE" diff --git a/release/bin/start.sh b/release/bin/start.sh index 4f1c1260b29..acc314a804d 100755 --- a/release/bin/start.sh +++ b/release/bin/start.sh @@ -30,9 +30,6 @@ fi cd "$(dirname "$0")"/../ || exit 1 ROOTDIR=$(pwd) BINDIR=$(pwd)/bin # the script dir -# udf is /udf -LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:$(pwd)/udf" -export LD_LIBRARY_PATH RED='\E[1;31m' RES='\E[0m' diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b2edc2d417f..52d846bbd6b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -172,6 +172,10 @@ target_link_libraries(data_exporter ${EXPORTER_LIBS}) add_executable(openmldb cmd/openmldb.cc base/linenoise.cc) # tablet needs std::filesystem(stdc++fs) target_link_libraries(openmldb ${EXPORTER_LIBS}) +set_target_properties( + openmldb + PROPERTIES + INSTALL_RPATH "${OPENMLDB_INSTALL_RPATH}") add_executable(data_collector datacollector/data_collector_server.cc datacollector/data_collector.cc) target_link_libraries(data_collector ${EXPORTER_LIBS}) diff --git a/src/sdk/CMakeLists.txt b/src/sdk/CMakeLists.txt index db2aadc638c..7ba850bf9bc 100644 --- a/src/sdk/CMakeLists.txt +++ b/src/sdk/CMakeLists.txt @@ -161,6 +161,9 @@ if(SQL_JAVASDK_ENABLE) SOURCES sql_router_sdk.i) target_include_directories(sql_jsdk PRIVATE ${JNI_INCLUDE_DIRS}) target_compile_options(sql_jsdk PRIVATE -w) + set_target_properties(sql_jsdk + PROPERTIES + BUILD_RPATH "${OPENMLDB_INSTALL_RPATH}") add_dependencies(sql_jsdk hybridse_jsdk_core_static) if(APPLE) From 0dbd1a648e8acada095db274d7cb68eacc3ccca9 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Tue, 18 Jul 2023 19:26:25 +0800 Subject: [PATCH 03/21] Update start_onebox.sh --- onebox/start_onebox.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/onebox/start_onebox.sh b/onebox/start_onebox.sh index 734fc7dd0ca..f143e644af9 100755 --- a/onebox/start_onebox.sh +++ b/onebox/start_onebox.sh @@ -29,7 +29,7 @@ if [ ! -r "$OPENMLDB_BIN" ]; then fi # enable dynamic loading searches the 'udf' directory -mkdir -p "${OPENMLDB_BIN}/../udf" +mkdir -p "$(dirname "$OPENMLDB_BIN")/../udf" # the subdirectory can be set through the environment variable ONEBOX_WORKDIR WORKSPACE=${ONEBOX_WORKDIR:-onebox/workspace} From 1d1320f8546e312c1f078685033fe8ba76af47fa Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Tue, 18 Jul 2023 12:26:56 +0000 Subject: [PATCH 04/21] chore: update comment --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 29c2f38e972..cccbd40ab9e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,3 +1,4 @@ +# RPATH '$ORIGIN' tokens are properly escaped if policy CMP0095 ON, which requires cmake >= 3.16 cmake_minimum_required (VERSION 3.16) if (POLICY CMP0068) cmake_policy(SET CMP0068 NEW) @@ -97,7 +98,7 @@ option(COVERAGE_NO_DEPS "Coverage without test deps, should ensure test built" O option(SANITIZER_ENABLE "Enable AddressSanitizer in Debug mode" OFF) # add_library can reply on this variable # see https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html#variable:BUILD_SHARED_LIBS -# WARN: installed binaries like openmldb may not runnable since the INSTALL_RPATH is not updated acorrespondingly +# WARN: installed binaries like openmldb may not runnable since the INSTALL_RPATH is not updated accordingly # Solution: 1. update INSTALL_RPATH for install target 2. install dependent shared libraries option(BUILD_SHARED_LIBS "Enable build shared Libraries instead static" OFF) option(TESTING_ENABLE_STRIP "Strip test binary that may help reduce storage space" OFF) From 6672db4defed3e07f12c53bb0d3e30c5a8052d49 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Thu, 20 Jul 2023 12:22:13 +0000 Subject: [PATCH 05/21] feat(draft): testing create function --- .github/workflows/sdk.yml | 14 +++++--- CMakeLists.txt | 12 +++---- .../openmldb/jdbc/SQLRouterSmokeTest.java | 20 ++++++++++++ .../_4paradigm/openmldb/jdbc/TestConfig.java | 12 +++---- onebox/start_onebox.sh | 18 +++++++++++ onebox/taskmanager.properties | 32 +++++++++++++++++++ src/CMakeLists.txt | 7 +++- src/sdk/CMakeLists.txt | 2 +- 8 files changed, 99 insertions(+), 18 deletions(-) create mode 100644 onebox/taskmanager.properties diff --git a/.github/workflows/sdk.yml b/.github/workflows/sdk.yml index 27712f578ae..901100b969e 100644 --- a/.github/workflows/sdk.yml +++ b/.github/workflows/sdk.yml @@ -41,7 +41,7 @@ jobs: image: ghcr.io/4paradigm/hybridsql:latest env: SQL_JAVASDK_ENABLE: ON - OPENMLDB_BUILD_TARGET: "cp_native_so openmldb" + OPENMLDB_BUILD_TARGET: "cp_native_so openmldb test_udf" MAVEN_OPTS: -Duser.home=/github/home SPARK_HOME: /tmp/spark/ steps: @@ -82,6 +82,11 @@ jobs: run: | make build + - name: build taskmanager + working-directory: java + run: | + ./mvnw package --batch-mode -DskipTests=true -Dscalatest.skip=true -Dwagon.skip=true -Dmaven.test.skip=true + - name: upload linux library if: github.event_name == 'push' uses: actions/upload-artifact@v2 @@ -95,7 +100,9 @@ jobs: run: | sh steps/ut_zookeeper.sh start sh steps/download_openmldb_spark.sh $SPARK_HOME - cd onebox && sh start_onebox.sh && sh start_onebox.sh standalone && cd - || exit + ./onebox/start_onebox.sh + ./onebox/start_onebox.sh standalone + ./onebox/start_onebox.sh taskmanager - name: run java modules smoke test working-directory: java @@ -147,10 +154,9 @@ jobs: runs-on: macos-latest needs: - java-sdk - if: github.event_name == 'push' env: SQL_JAVASDK_ENABLE: ON - OPENMLDB_BUILD_TARGET: "cp_native_so openmldb" + OPENMLDB_BUILD_TARGET: "cp_native_so openmldb test_udf" NPROC: 3 steps: - uses: actions/checkout@v3 diff --git a/CMakeLists.txt b/CMakeLists.txt index cccbd40ab9e..b0c01b3ecbc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,11 +143,11 @@ include(farmhash) if (CMAKE_SYSTEM_NAME STREQUAL "Linux") set(OS_LIB ${CMAKE_THREAD_LIBS_INIT} rt) set(BRPC_LIBS ${BRPC_LIBRARY} ${Protobuf_LIBRARIES} ${GLOG_LIBRARY} ${GFLAGS_LIBRARY} ${UNWIND_LIBRARY} ${OPENSSL_LIBRARIES} ${LEVELDB_LIBRARY} ${Z_LIBRARY} ${SNAPPY_LIBRARY} dl pthread ${OS_LIB}) - # OPENMLDB_INSTALL_RPATH + # OPENMLDB_RPATH # custom RPATH tag for necessary install binaries (like bin/openmldb) # relative to binary location so any install location works, binary is # by convention installed to 'bin/' directory, search to '/../$LIB' and '/../udf' - set(OPENMLDB_INSTALL_RPATH '$ORIGIN/../$LIB' '$ORIGIN/../udf') + set(OPENMLDB_RPATH '$ORIGIN/../$LIB' '$ORIGIN/../udf') elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin") set(OS_LIB ${CMAKE_THREAD_LIBS_INIT} @@ -161,7 +161,7 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin") "-Wl,-U,_ProfilerStart" "-Wl,-U,_ProfilerStop") set(BRPC_LIBS ${BRPC_LIBRARY} ${Protobuf_LIBRARIES} ${GLOG_LIBRARY} ${GFLAGS_LIBRARY} ${OPENSSL_LIBRARIES} ${LEVELDB_LIBRARY} ${Z_LIBRARY} ${SNAPPY_LIBRARY} dl pthread ${OS_LIB}) - set(OPENMLDB_INSTALL_RPATH '@loader_path/../lib' '@loader_path/../udf') + set(OPENMLDB_RPATH '@loader_path/../lib' '@loader_path/../udf') endif () if (SANITIZER_ENABLE) @@ -318,9 +318,9 @@ install( PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ ) install( - FILES ${OPENMLDB_SBINS} - DESTINATION sbin - PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ + FILES ${OPENMLDB_SBINS} + DESTINATION sbin + PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ ) install(FILES ${OPENMLDB_CONFS} DESTINATION conf) install( diff --git a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java index 61945b0740d..1c5819c0c2c 100644 --- a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java +++ b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java @@ -266,6 +266,26 @@ public void testSmoke(SqlExecutor router) { } } + @Test(dataProvider = "executor") + public void testCreateFunction(SqlExecutor router) { + java.sql.Statement statement = router.getStatement(); + + // create function ok + Assert.assertTrue(statement.execute("CREATE FUNCTION cut2(x STRING) RETURNS STRING OPTIONS (FILE='/tmp/libtest_udf.so')")); + Assert.assertTrue(statement.execute("SHOW FUNCTIONS")); + + // queryable + Assert.assertTrue(statement.execute("set @@execute_mode='online'")); + Assert.assertTrue(statement.execute("select cut2('hello')")); + java.sql.ResultSet resultset = statement.getResultSet(); + resultset.next(); + String result = resultset.getString(1); + Assert.assertEqualsDeep(result, "he"); + + // dropable + Assert.assertTrue(statement.execute("DROP FUNCTION cut2")); + } + @Test(dataProvider = "executor") public void testParameterizedQueryFail(SqlExecutor router) { try { diff --git a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/TestConfig.java b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/TestConfig.java index b7018900bbb..7e233e1c8da 100644 --- a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/TestConfig.java +++ b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/TestConfig.java @@ -17,11 +17,11 @@ package com._4paradigm.openmldb.jdbc; public class TestConfig { -// config for cluster mode - public static String ZK_CLUSTER="127.0.0.1:6181"; - public static String ZK_PATH="/onebox"; + // config for cluster mode + public static String ZK_CLUSTER = "127.0.0.1:6181"; + public static String ZK_PATH = "/onebox"; -// config for standalone mode - public static String HOST="127.0.0.1"; - public static long PORT=6527; + // config for standalone mode + public static String HOST = "127.0.0.1"; + public static long PORT = 6527; } diff --git a/onebox/start_onebox.sh b/onebox/start_onebox.sh index f143e644af9..669ea3e7c9a 100755 --- a/onebox/start_onebox.sh +++ b/onebox/start_onebox.sh @@ -18,6 +18,7 @@ set -eE set -x cd "$(dirname "$0")/../" +BASE=$(pwd) # allow producing core files ulimit -c unlimited @@ -133,6 +134,19 @@ start_cluster() { echo "cluster start ok" } +start_taskmanager() { + rm -rf onebox/taskmanager + cp -r java/openmldb-taskmanager/target/openmldb-taskmanager-binary/ onebox/taskmanager + pushd onebox/taskmanager/ + chmod +x bin/*.sh + mkdir -p bin/udf/ + cp "$BASE/build/udf/"*.so bin/udf/ + cp "$BASE/onebox/taskmanager.properties" conf/ + + ./bin/taskmanager.sh > "$WORKSPACE/logs/taskmanager.log" 2>&1 & + popd +} + SA_NS=$IP:6527 SA_TABLET=$IP:9921 SA_BINLOG="$WORKSPACE/standalone/binlog" @@ -188,6 +202,10 @@ cluster) standalone) start_standalone ;; +taskmanager) + start_taskmanager + ;; + -h | help) help ;; diff --git a/onebox/taskmanager.properties b/onebox/taskmanager.properties new file mode 100644 index 00000000000..2a5a00095b1 --- /dev/null +++ b/onebox/taskmanager.properties @@ -0,0 +1,32 @@ +# Server Config +server.host=0.0.0.0 +server.port=9902 +server.worker_threads=4 +server.io_threads=4 +server.channel_keep_alive_time=1800 +prefetch.jobid.num=1 +job.log.path=./logs/ +external.function.dir=./udf/ +track.unfinished.jobs=true +job.tracker.interval=30 + +# OpenMLDB Config +zookeeper.cluster=0.0.0.0:6181 +zookeeper.root_path=/onebox +zookeeper.session_timeout=5000 +zookeeper.connection_timeout=5000 +zookeeper.max_retries=10 +zookeeper.base_sleep_time=1000 +zookeeper.max_connect_waitTime=30000 + +# Spark Config +spark.home= +spark.master=local[*] +spark.yarn.jars= +spark.default.conf= +spark.eventLog.dir= +spark.yarn.maxAppAttempts=1 +batchjob.jar.path= +namenode.uri= +offline.data.prefix=file:///tmp/openmldb_offline_storage/ +hadoop.conf.dir= diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 52d846bbd6b..927c6679bd9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -152,6 +152,10 @@ if(TESTING_ENABLE) # abs path compile_test_with_extra(datacollector ${CMAKE_CURRENT_SOURCE_DIR}/datacollector/data_collector.cc) add_library(test_udf SHARED examples/test_udf.cc) + set_target_properties(test_udf + PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/udf + ) endif() add_executable(parse_log tools/parse_log.cc $) @@ -175,7 +179,8 @@ target_link_libraries(openmldb ${EXPORTER_LIBS}) set_target_properties( openmldb PROPERTIES - INSTALL_RPATH "${OPENMLDB_INSTALL_RPATH}") + BUILD_RPATH "${OPENMLDB_RPATH}" + INSTALL_RPATH "${OPENMLDB_RPATH}") add_executable(data_collector datacollector/data_collector_server.cc datacollector/data_collector.cc) target_link_libraries(data_collector ${EXPORTER_LIBS}) diff --git a/src/sdk/CMakeLists.txt b/src/sdk/CMakeLists.txt index 7ba850bf9bc..2a454e5c5d6 100644 --- a/src/sdk/CMakeLists.txt +++ b/src/sdk/CMakeLists.txt @@ -163,7 +163,7 @@ if(SQL_JAVASDK_ENABLE) target_compile_options(sql_jsdk PRIVATE -w) set_target_properties(sql_jsdk PROPERTIES - BUILD_RPATH "${OPENMLDB_INSTALL_RPATH}") + BUILD_RPATH "${OPENMLDB_RPATH}") add_dependencies(sql_jsdk hybridse_jsdk_core_static) if(APPLE) From d4ce0fc6e8b7d745e5b1228dad7e22677c98cb98 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Fri, 21 Jul 2023 03:29:31 +0000 Subject: [PATCH 06/21] fix: tests --- src/CMakeLists.txt | 11 ++++++----- src/cmd/single_tablet_test.cc | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 927c6679bd9..c51a7f6371d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -151,13 +151,14 @@ if(TESTING_ENABLE) compile_test(apiserver) # abs path compile_test_with_extra(datacollector ${CMAKE_CURRENT_SOURCE_DIR}/datacollector/data_collector.cc) - add_library(test_udf SHARED examples/test_udf.cc) - set_target_properties(test_udf - PROPERTIES - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/udf - ) endif() +add_library(test_udf SHARED examples/test_udf.cc) +set_target_properties(test_udf + PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/udf +) + add_executable(parse_log tools/parse_log.cc $) add_executable(data_exporter tools/data_exporter.cc tools/log_exporter.cc tools/tablemeta_reader.cc $) diff --git a/src/cmd/single_tablet_test.cc b/src/cmd/single_tablet_test.cc index be2335c8cc5..b4928371f0b 100644 --- a/src/cmd/single_tablet_test.cc +++ b/src/cmd/single_tablet_test.cc @@ -75,7 +75,7 @@ TEST_P(DBSDKTest, CreateFunction) { ProcessSQLs(sr_2, {"set @@execute_mode = 'online'"}); } hybridse::sdk::Status status; - std::string so_path = openmldb::test::GetParentDir(openmldb::test::GetExeDir()) + "/libtest_udf.so"; + std::string so_path = openmldb::test::GetParentDir(openmldb::test::GetExeDir()) + "/../udf/libtest_udf.so"; std::string cut2_sql = absl::StrCat("CREATE FUNCTION cut2(x STRING) RETURNS STRING " "OPTIONS (FILE='", so_path, "');"); std::string strlength_sql = absl::StrCat("CREATE FUNCTION strlength(x STRING) RETURNS INT " @@ -150,7 +150,7 @@ TEST_P(DBSDKTest, CreateUdafFunction) { ProcessSQLs(sr_2.get(), {"set @@execute_mode = 'online'"}); } hybridse::sdk::Status status; - std::string so_path = openmldb::test::GetParentDir(openmldb::test::GetExeDir()) + "/libtest_udf.so"; + std::string so_path = openmldb::test::GetParentDir(openmldb::test::GetExeDir()) + "/../udf/libtest_udf.so"; std::string agg_fun_str = absl::StrCat("CREATE AGGREGATE FUNCTION special_sum(x BIGINT) RETURNS BIGINT " "OPTIONS (FILE='", so_path, "');"); std::string agg_fun_str1 = absl::StrCat("CREATE AGGREGATE FUNCTION count_null(x STRING) RETURNS BIGINT " From 392d8d2638067a680b8e917e383d1eef40d21aa7 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Fri, 21 Jul 2023 04:38:21 +0000 Subject: [PATCH 07/21] fix: java jdbc test --- .../java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java index 1c5819c0c2c..5b91a521c94 100644 --- a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java +++ b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java @@ -271,7 +271,7 @@ public void testCreateFunction(SqlExecutor router) { java.sql.Statement statement = router.getStatement(); // create function ok - Assert.assertTrue(statement.execute("CREATE FUNCTION cut2(x STRING) RETURNS STRING OPTIONS (FILE='/tmp/libtest_udf.so')")); + Assert.assertTrue(statement.execute("CREATE FUNCTION cut2(x STRING) RETURNS STRING OPTIONS (FILE='libtest_udf.so')")); Assert.assertTrue(statement.execute("SHOW FUNCTIONS")); // queryable @@ -280,7 +280,7 @@ public void testCreateFunction(SqlExecutor router) { java.sql.ResultSet resultset = statement.getResultSet(); resultset.next(); String result = resultset.getString(1); - Assert.assertEqualsDeep(result, "he"); + Assert.assertEquals(result, "he"); // dropable Assert.assertTrue(statement.execute("DROP FUNCTION cut2")); From 0455a0d40c092fb965f9aea23b0bd75febb0d277 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Fri, 21 Jul 2023 04:42:47 +0000 Subject: [PATCH 08/21] fix: taskmanager.properties --- onebox/taskmanager.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/onebox/taskmanager.properties b/onebox/taskmanager.properties index 2a5a00095b1..3cc27ce9c44 100644 --- a/onebox/taskmanager.properties +++ b/onebox/taskmanager.properties @@ -1,5 +1,5 @@ # Server Config -server.host=0.0.0.0 +server.host=127.0.0.1 server.port=9902 server.worker_threads=4 server.io_threads=4 @@ -11,7 +11,7 @@ track.unfinished.jobs=true job.tracker.interval=30 # OpenMLDB Config -zookeeper.cluster=0.0.0.0:6181 +zookeeper.cluster=127.0.0.1:6181 zookeeper.root_path=/onebox zookeeper.session_timeout=5000 zookeeper.connection_timeout=5000 @@ -26,7 +26,7 @@ spark.yarn.jars= spark.default.conf= spark.eventLog.dir= spark.yarn.maxAppAttempts=1 -batchjob.jar.path= +batchjob.jar.path=../lib/openmldb-batchjob-0.7.0-SNAPSHOT.jar namenode.uri= offline.data.prefix=file:///tmp/openmldb_offline_storage/ hadoop.conf.dir= From 9a210dedfb3b9aaa8e07413a443f85800d0397be Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Fri, 21 Jul 2023 18:32:16 +0800 Subject: [PATCH 09/21] fix(jdbc): smoketest --- .../openmldb/jdbc/SQLRouterSmokeTest.java | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java index 5b91a521c94..6df52a58d73 100644 --- a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java +++ b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java @@ -270,20 +270,25 @@ public void testSmoke(SqlExecutor router) { public void testCreateFunction(SqlExecutor router) { java.sql.Statement statement = router.getStatement(); - // create function ok - Assert.assertTrue(statement.execute("CREATE FUNCTION cut2(x STRING) RETURNS STRING OPTIONS (FILE='libtest_udf.so')")); - Assert.assertTrue(statement.execute("SHOW FUNCTIONS")); - - // queryable - Assert.assertTrue(statement.execute("set @@execute_mode='online'")); - Assert.assertTrue(statement.execute("select cut2('hello')")); - java.sql.ResultSet resultset = statement.getResultSet(); - resultset.next(); - String result = resultset.getString(1); - Assert.assertEquals(result, "he"); - - // dropable - Assert.assertTrue(statement.execute("DROP FUNCTION cut2")); + try { + // create function ok + Assert.assertTrue(statement.execute("CREATE FUNCTION cut2(x STRING) RETURNS STRING OPTIONS (FILE='libtest_udf.so')")); + Assert.assertTrue(statement.execute("SHOW FUNCTIONS")); + + // queryable + Assert.assertTrue(statement.execute("set @@execute_mode='online'")); + Assert.assertTrue(statement.execute("select cut2('hello')")); + java.sql.ResultSet resultset = statement.getResultSet(); + resultset.next(); + String result = resultset.getString(1); + Assert.assertEquals(result, "he"); + + // dropable + Assert.assertTrue(statement.execute("DROP FUNCTION cut2")); + } catch (Exception e) { + e.printStackTrace(); + Assert.fail(); + } } @Test(dataProvider = "executor") From e81a61e6775176ef4a390c64e156938ee01025f9 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Fri, 21 Jul 2023 23:42:17 +0800 Subject: [PATCH 10/21] fix: udf lib for taskmanager --- onebox/start_onebox.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/onebox/start_onebox.sh b/onebox/start_onebox.sh index 669ea3e7c9a..48cad500d8c 100755 --- a/onebox/start_onebox.sh +++ b/onebox/start_onebox.sh @@ -139,9 +139,10 @@ start_taskmanager() { cp -r java/openmldb-taskmanager/target/openmldb-taskmanager-binary/ onebox/taskmanager pushd onebox/taskmanager/ chmod +x bin/*.sh - mkdir -p bin/udf/ - cp "$BASE/build/udf/"*.so bin/udf/ - cp "$BASE/onebox/taskmanager.properties" conf/ + # NOTE: taskmanager find shared libraraies in "/udf", where starts taskmanager matters + mkdir -p udf/ + cp -v "$BASE/build/udf/"*.so udf/ + cp -v "$BASE/onebox/taskmanager.properties" conf/ ./bin/taskmanager.sh > "$WORKSPACE/logs/taskmanager.log" 2>&1 & popd From 7fa00e5ba671d888206141deec86ea0bd34d4981 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Sat, 22 Jul 2023 23:20:27 +0800 Subject: [PATCH 11/21] chore(debug): LD_DEBUG=libs for taskmanager --- onebox/start_onebox.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/onebox/start_onebox.sh b/onebox/start_onebox.sh index 48cad500d8c..1c96803223c 100755 --- a/onebox/start_onebox.sh +++ b/onebox/start_onebox.sh @@ -144,7 +144,7 @@ start_taskmanager() { cp -v "$BASE/build/udf/"*.so udf/ cp -v "$BASE/onebox/taskmanager.properties" conf/ - ./bin/taskmanager.sh > "$WORKSPACE/logs/taskmanager.log" 2>&1 & + LB_DEBUG=libs ./bin/taskmanager.sh > "$WORKSPACE/logs/taskmanager.log" 2>&1 & popd } From 6205f7925a3c1d68a2b1aa85f3d16ca089943514 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Mon, 24 Jul 2023 13:46:15 +0000 Subject: [PATCH 12/21] build(java): set offline mode for git-commit-id-plugin refer https://github.com/git-commit-id/git-commit-id-maven-plugin/pull/424 --- java/pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/pom.xml b/java/pom.xml index 1d168284dbc..84206d8bea2 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -399,6 +399,8 @@ true ${project.build.outputDirectory}/git.properties true + + true From 7680d71d66cc18062b5c57cd4cde80dd23b1d45d Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Mon, 24 Jul 2023 15:35:00 +0000 Subject: [PATCH 13/21] fix: rpath token --- CMakeLists.txt | 6 +++--- .../openmldb/jdbc/SQLRouterSmokeTest.java | 19 +++++++++++++++---- onebox/start_onebox.sh | 8 ++++---- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b0c01b3ecbc..e09451e4b6a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# RPATH '$ORIGIN' tokens are properly escaped if policy CMP0095 ON, which requires cmake >= 3.16 +# RPATH "$ORIGIN" tokens are properly escaped if policy CMP0095 ON, which requires cmake >= 3.16 cmake_minimum_required (VERSION 3.16) if (POLICY CMP0068) cmake_policy(SET CMP0068 NEW) @@ -147,7 +147,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux") # custom RPATH tag for necessary install binaries (like bin/openmldb) # relative to binary location so any install location works, binary is # by convention installed to 'bin/' directory, search to '/../$LIB' and '/../udf' - set(OPENMLDB_RPATH '$ORIGIN/../$LIB' '$ORIGIN/../udf') + set(OPENMLDB_RPATH "$ORIGIN/../$LIB" "$ORIGIN/../udf") elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin") set(OS_LIB ${CMAKE_THREAD_LIBS_INIT} @@ -161,7 +161,7 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin") "-Wl,-U,_ProfilerStart" "-Wl,-U,_ProfilerStop") set(BRPC_LIBS ${BRPC_LIBRARY} ${Protobuf_LIBRARIES} ${GLOG_LIBRARY} ${GFLAGS_LIBRARY} ${OPENSSL_LIBRARIES} ${LEVELDB_LIBRARY} ${Z_LIBRARY} ${SNAPPY_LIBRARY} dl pthread ${OS_LIB}) - set(OPENMLDB_RPATH '@loader_path/../lib' '@loader_path/../udf') + set(OPENMLDB_RPATH "@loader_path/../lib" "@loader_path/../udf") endif () if (SANITIZER_ENABLE) diff --git a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java index 6df52a58d73..7bc14e51d68 100644 --- a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java +++ b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java @@ -272,22 +272,33 @@ public void testCreateFunction(SqlExecutor router) { try { // create function ok - Assert.assertTrue(statement.execute("CREATE FUNCTION cut2(x STRING) RETURNS STRING OPTIONS (FILE='libtest_udf.so')")); + statement.execute("CREATE FUNCTION cut2(x STRING) RETURNS STRING OPTIONS (FILE='libtest_udf.so')"); Assert.assertTrue(statement.execute("SHOW FUNCTIONS")); // queryable - Assert.assertTrue(statement.execute("set @@execute_mode='online'")); + statement.execute("set session execute_mode='offline'"); Assert.assertTrue(statement.execute("select cut2('hello')")); java.sql.ResultSet resultset = statement.getResultSet(); resultset.next(); String result = resultset.getString(1); Assert.assertEquals(result, "he"); - // dropable - Assert.assertTrue(statement.execute("DROP FUNCTION cut2")); + statement.execute("set session execute_mode='online'"); + Assert.assertTrue(statement.execute("select cut2('hello')")); + resultset = statement.getResultSet(); + resultset.next(); + result = resultset.getString(1); + Assert.assertEquals(result, "he"); } catch (Exception e) { e.printStackTrace(); Assert.fail(); + } finally { + // dropable + try { + statement.execute("DROP FUNCTION cut2"); + } catch (Exception e) { + Assert.fail(); + } } } diff --git a/onebox/start_onebox.sh b/onebox/start_onebox.sh index 1c96803223c..9ee46defd30 100755 --- a/onebox/start_onebox.sh +++ b/onebox/start_onebox.sh @@ -91,7 +91,7 @@ cluster_start_component() { fi # just need extra_opts to split - "$OPENMLDB_BIN" \ + LD_DEBUG=libs "$OPENMLDB_BIN" \ --role="$role" \ --endpoint="$endpoint" \ --openmldb_log_dir="$log_dir" \ @@ -144,7 +144,7 @@ start_taskmanager() { cp -v "$BASE/build/udf/"*.so udf/ cp -v "$BASE/onebox/taskmanager.properties" conf/ - LB_DEBUG=libs ./bin/taskmanager.sh > "$WORKSPACE/logs/taskmanager.log" 2>&1 & + LD_DEBUG=libs ./bin/taskmanager.sh > "$WORKSPACE/logs/taskmanager.log" 2>&1 & popd } @@ -163,7 +163,7 @@ start_standalone() { mkdir -p "$WORKSPACE/logs/standalone-tb" mkdir -p "$WORKSPACE/logs/standalone-ns" - ./build/bin/openmldb --db_root_path="$SA_BINLOG" \ + LD_DEBUG=libs ./build/bin/openmldb --db_root_path="$SA_BINLOG" \ --recycle_bin_root_path="$SA_RECYCLE" \ --openmldb_log_dir="$WORKSPACE/logs/standalone-tb" \ --endpoint="$SA_TABLET" --role=tablet \ @@ -171,7 +171,7 @@ start_standalone() { sleep 2 # start ns - ./build/bin/openmldb --endpoint="$SA_NS" --role=nameserver \ + LD_DEBUG=libs ./build/bin/openmldb --endpoint="$SA_NS" --role=nameserver \ --tablet="$SA_TABLET" \ --openmldb_log_dir="$WORKSPACE/logs/standalone-ns" \ --tablet_offline_check_interval=1 --tablet_heartbeat_timeout=1 >"$WORKSPACE/sa-ns.log" 2>&1 & From 41e54eb1b56fd6c37d51daf45d8f9e5cb2f193dc Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Mon, 24 Jul 2023 15:51:18 +0000 Subject: [PATCH 14/21] fix(create function): skip create function test in offline --- .../openmldb/jdbc/SQLRouterSmokeTest.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java index 7bc14e51d68..4c67359cb35 100644 --- a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java +++ b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java @@ -276,19 +276,26 @@ public void testCreateFunction(SqlExecutor router) { Assert.assertTrue(statement.execute("SHOW FUNCTIONS")); // queryable - statement.execute("set session execute_mode='offline'"); - Assert.assertTrue(statement.execute("select cut2('hello')")); - java.sql.ResultSet resultset = statement.getResultSet(); - resultset.next(); - String result = resultset.getString(1); - Assert.assertEquals(result, "he"); - - statement.execute("set session execute_mode='online'"); - Assert.assertTrue(statement.execute("select cut2('hello')")); - resultset = statement.getResultSet(); - resultset.next(); - result = resultset.getString(1); - Assert.assertEquals(result, "he"); + { + // FIXME: offline mode is not good for testing + // statement.execute("set session execute_mode='offline'"); + // statement.execute("set global sync_job=true"); + // Assert.assertTrue(statement.execute("select cut2('hello')")); + // java.sql.ResultSet resultset = statement.getResultSet(); + // resultset.next(); + // String result = resultset.getString(1); + // Assert.assertEquals(result, "he"); + } + + { + // FIXME: execute returns do not actually indicate execute success/failure + statement.execute("set session execute_mode='online'"); + Assert.assertTrue(statement.execute("select cut2('hello')")); + java.sql.ResultSet resultset = statement.getResultSet(); + resultset.next(); + String result = resultset.getString(1); + Assert.assertEquals(result, "he"); + } } catch (Exception e) { e.printStackTrace(); Assert.fail(); From 2db1bd056c7d3eca03690fb7f260c1e3e01119ab Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Tue, 25 Jul 2023 06:57:23 +0000 Subject: [PATCH 15/21] refactor(onebox): onebox scripts - start & stop onebox services with pidfile --- .../openmldb/jdbc/SQLRouterSmokeTest.java | 1 - java/openmldb-taskmanager/pom.xml | 1 + onebox/start_onebox.sh | 43 ++++++++++++++----- onebox/stop_all.sh | 18 +++++--- onebox/taskmanager.properties | 4 +- 5 files changed, 49 insertions(+), 18 deletions(-) diff --git a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java index 4c67359cb35..9b8c1add933 100644 --- a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java +++ b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java @@ -288,7 +288,6 @@ public void testCreateFunction(SqlExecutor router) { } { - // FIXME: execute returns do not actually indicate execute success/failure statement.execute("set session execute_mode='online'"); Assert.assertTrue(statement.execute("select cut2('hello')")); java.sql.ResultSet resultset = statement.getResultSet(); diff --git a/java/openmldb-taskmanager/pom.xml b/java/openmldb-taskmanager/pom.xml index 108725a9acf..7e9ddaa3c5b 100644 --- a/java/openmldb-taskmanager/pom.xml +++ b/java/openmldb-taskmanager/pom.xml @@ -340,6 +340,7 @@ yyyy.MM.dd HH:mm:ss true true + true diff --git a/onebox/start_onebox.sh b/onebox/start_onebox.sh index 9ee46defd30..2511ca6d45f 100755 --- a/onebox/start_onebox.sh +++ b/onebox/start_onebox.sh @@ -35,10 +35,21 @@ mkdir -p "$(dirname "$OPENMLDB_BIN")/../udf" # the subdirectory can be set through the environment variable ONEBOX_WORKDIR WORKSPACE=${ONEBOX_WORKDIR:-onebox/workspace} mkdir -p "$WORKSPACE" +mkdir -p "$WORKSPACE/run/" WORKSPACE=$(cd "$WORKSPACE" && pwd) IP=127.0.0.1 +canonical_file_name() { + local var + var=$1 + while [ $# -gt 1 ]; do + shift + var="$var-${1//:/-}" + done + echo "$var" +} + # Function: cluster_start_component # start a openmldb component for cluster # @param $1 role, (tablet/nameserver) @@ -90,6 +101,9 @@ cluster_start_component() { return 3 fi + local canon_name + canon_name="$(canonical_file_name "$role" "$endpoint").log" + # just need extra_opts to split LD_DEBUG=libs "$OPENMLDB_BIN" \ --role="$role" \ @@ -97,7 +111,9 @@ cluster_start_component() { --openmldb_log_dir="$log_dir" \ --zk_cluster="$zk_end" \ --zk_root_path="$zk_path" \ - "${extra_opts[@]}" + "${extra_opts[@]}" > "$WORKSPACE/$canon_name.log" 2>&1 & + + echo $! > "$WORKSPACE/run/$canon_name.pid" } ZK_CLUSTER=$IP:6181 @@ -113,31 +129,35 @@ TABLET2=$IP:9522 start_cluster() { # first start zookeeper - cluster_start_component tablet "$TABLET0" "$WORKSPACE/logs/tablet0" "$ZK_CLUSTER" "/onebox" "$WORKSPACE/tablet0-binlogs" "$WORKSPACE/recycle_bin0" >"$WORKSPACE/tablet0.log" 2>&1 & + cluster_start_component tablet "$TABLET0" "$WORKSPACE/logs/tablet0" "$ZK_CLUSTER" "/onebox" "$WORKSPACE/tablet0-binlogs" "$WORKSPACE/recycle_bin0" sleep 2 - cluster_start_component tablet "$TABLET1" "$WORKSPACE/logs/tablet1" "$ZK_CLUSTER" "/onebox" "$WORKSPACE/tablet1-binlogs" "$WORKSPACE/recycle_bin1" >"$WORKSPACE/tablet1.log" 2>&1 & + cluster_start_component tablet "$TABLET1" "$WORKSPACE/logs/tablet1" "$ZK_CLUSTER" "/onebox" "$WORKSPACE/tablet1-binlogs" "$WORKSPACE/recycle_bin1" sleep 2 - cluster_start_component tablet "$TABLET2" "$WORKSPACE/logs/tablet2" "$ZK_CLUSTER" "/onebox" "$WORKSPACE/tablet2-binlogs" "$WORKSPACE/recycle_bin2" >"$WORKSPACE/tablet1.log" 2>&1 & + cluster_start_component tablet "$TABLET2" "$WORKSPACE/logs/tablet2" "$ZK_CLUSTER" "/onebox" "$WORKSPACE/tablet2-binlogs" "$WORKSPACE/recycle_bin2" sleep 2 - cluster_start_component nameserver "$NS0" "$WORKSPACE/logs/ns0" "$ZK_CLUSTER" "/onebox" >"$WORKSPACE/ns0.log" 2>&1 & + cluster_start_component nameserver "$NS0" "$WORKSPACE/logs/ns0" "$ZK_CLUSTER" "/onebox" sleep 2 - cluster_start_component nameserver "$NS1" "$WORKSPACE/logs/ns1" "$ZK_CLUSTER" "/onebox" >"$WORKSPACE/ns1.log" 2>&1 & + cluster_start_component nameserver "$NS1" "$WORKSPACE/logs/ns1" "$ZK_CLUSTER" "/onebox" sleep 2 - cluster_start_component nameserver "$NS2" "$WORKSPACE/logs/ns2" "$ZK_CLUSTER" "/onebox" >"$WORKSPACE/ns2.log" 2>&1 & + cluster_start_component nameserver "$NS2" "$WORKSPACE/logs/ns2" "$ZK_CLUSTER" "/onebox" sleep 2 echo "cluster start ok" } +TASKMANGER_DIST=java/openmldb-taskmanager/target/openmldb-taskmanager-binary/ start_taskmanager() { - rm -rf onebox/taskmanager - cp -r java/openmldb-taskmanager/target/openmldb-taskmanager-binary/ onebox/taskmanager - pushd onebox/taskmanager/ + if [ ! -d "$TASKMANGER_DIST" ]; then + echo "taskmanager dist directory $TASKMANGER_DIST not built, run './mvnw package --batch-mode -DskipTests=true -Dscalatest.skip=true -Dwagon.skip=true -Dmaven.test.skip=true' in java directory first" + exit 1 + fi + + pushd "$TASKMANGER_DIST" chmod +x bin/*.sh # NOTE: taskmanager find shared libraraies in "/udf", where starts taskmanager matters mkdir -p udf/ @@ -145,6 +165,7 @@ start_taskmanager() { cp -v "$BASE/onebox/taskmanager.properties" conf/ LD_DEBUG=libs ./bin/taskmanager.sh > "$WORKSPACE/logs/taskmanager.log" 2>&1 & + echo $! > "$WORKSPACE/run/taskmanager.pid" popd } @@ -168,6 +189,7 @@ start_standalone() { --openmldb_log_dir="$WORKSPACE/logs/standalone-tb" \ --endpoint="$SA_TABLET" --role=tablet \ --binlog_notify_on_put=true >"$WORKSPACE/sa-tablet.log" 2>&1 & + echo $! > "$WORKSPACE/run/$(canonical_file_name sa-tablet).pid" sleep 2 # start ns @@ -175,6 +197,7 @@ start_standalone() { --tablet="$SA_TABLET" \ --openmldb_log_dir="$WORKSPACE/logs/standalone-ns" \ --tablet_offline_check_interval=1 --tablet_heartbeat_timeout=1 >"$WORKSPACE/sa-ns.log" 2>&1 & + echo $! > "$WORKSPACE/run/$(canonical_file_name sa-ns).pid" sleep 2 echo "standalone start ok" } diff --git a/onebox/stop_all.sh b/onebox/stop_all.sh index 03c9f6fe0cb..2916f9a1f45 100755 --- a/onebox/stop_all.sh +++ b/onebox/stop_all.sh @@ -14,11 +14,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -set -x -e +set -e + +cd "$(dirname "$0")" + +for file in workspace/run/*.pid ; do + if [[ "$OSTYPE" = "darwin"* ]]; then + pkill -9 -l -F "$file" || echo "pidfile $file not valid, ignoreing" + else + pkill -9 -e -F "$file" || echo "pidfile $file not valid, ignoreing" + fi + rm -f "$file" +done -if [[ "$OSTYPE" = "darwin"* ]]; then - pkill -9 -x -l openmldb -else - pkill -9 -x -e openmldb -fi diff --git a/onebox/taskmanager.properties b/onebox/taskmanager.properties index 3cc27ce9c44..135b944a9c4 100644 --- a/onebox/taskmanager.properties +++ b/onebox/taskmanager.properties @@ -26,7 +26,9 @@ spark.yarn.jars= spark.default.conf= spark.eventLog.dir= spark.yarn.maxAppAttempts=1 -batchjob.jar.path=../lib/openmldb-batchjob-0.7.0-SNAPSHOT.jar + +# relative path, based on which directory taskmanager starts +batchjob.jar.path=./lib/openmldb-batchjob-0.7.0-SNAPSHOT.jar namenode.uri= offline.data.prefix=file:///tmp/openmldb_offline_storage/ hadoop.conf.dir= From 6d806201baf4a3749d78775a4c099215da095eb2 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Tue, 25 Jul 2023 07:15:33 +0000 Subject: [PATCH 16/21] fix(onebox): canonical name --- onebox/start_onebox.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/onebox/start_onebox.sh b/onebox/start_onebox.sh index 2511ca6d45f..84bfdc6c34c 100755 --- a/onebox/start_onebox.sh +++ b/onebox/start_onebox.sh @@ -102,7 +102,7 @@ cluster_start_component() { fi local canon_name - canon_name="$(canonical_file_name "$role" "$endpoint").log" + canon_name="$(canonical_file_name "$role" "$endpoint")" # just need extra_opts to split LD_DEBUG=libs "$OPENMLDB_BIN" \ From 5a8166dfda653b9fbed956f5a8cda77198f565ff Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Tue, 25 Jul 2023 10:17:56 +0000 Subject: [PATCH 17/21] fix(jdbc): tests on github --- .github/workflows/sdk.yml | 32 ++++++++++++++++++++++++++++---- onebox/start_onebox.sh | 1 - onebox/stop_all.sh | 1 + steps/download_openmldb_spark.sh | 2 +- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/.github/workflows/sdk.yml b/.github/workflows/sdk.yml index 901100b969e..a4109c2ab74 100644 --- a/.github/workflows/sdk.yml +++ b/.github/workflows/sdk.yml @@ -33,6 +33,7 @@ env: NPROC: 2 # default Parallel build number for GitHub's Linux runner EXAMPLES_ENABLE: OFF # turn off hybridse's example code HYBRIDSE_TESTING_ENABLE: OFF # turn off hybridse's test code + SPARK_HOME: /tmp/spark/ jobs: java-sdk: @@ -43,7 +44,6 @@ jobs: SQL_JAVASDK_ENABLE: ON OPENMLDB_BUILD_TARGET: "cp_native_so openmldb test_udf" MAVEN_OPTS: -Duser.home=/github/home - SPARK_HOME: /tmp/spark/ steps: - uses: actions/checkout@v2 @@ -59,7 +59,7 @@ jobs: - name: Import GPG key id: import_gpg if: github.event_name == 'push' - uses: crazy-max/ghaction-import-gpg@v4 + uses: crazy-max/ghaction-import-gpg@v5 with: gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} @@ -144,13 +144,12 @@ jobs: - name: stop services run: | - cd onebox && ./stop_all.sh && cd - || exit + ./onebox/stop_all.sh sh steps/ut_zookeeper.sh stop java-sdk-mac: # mac job for java sdk. steps are almost same with job 'java-sdk' # except mvn deploy won't target all modules, just hybridse-native & openmldb-native - # the job only run on tag push or manual workflow dispatch due to no test runs runs-on: macos-latest needs: - java-sdk @@ -195,6 +194,7 @@ jobs: - name: Import GPG key id: import_gpg + if: github.event_name == 'push' uses: crazy-max/ghaction-import-gpg@v5 with: gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} @@ -203,6 +203,30 @@ jobs: run: | make build + - name: build taskmanager + working-directory: java + run: | + ./mvnw package --batch-mode -DskipTests=true -Dscalatest.skip=true -Dwagon.skip=true -Dmaven.test.skip=true + + # ======================================== # + # MacOS Tests + # ======================================== # + - name: start services + run: | + sh steps/ut_zookeeper.sh start + sh steps/download_openmldb_spark.sh $SPARK_HOME + ./onebox/start_onebox.sh + ./onebox/start_onebox.sh standalone + ./onebox/start_onebox.sh taskmanager + + - name: run java modules smoke test + working-directory: java + run: | + ./mvnw --batch-mode test + + # ======================================== # + # Deploy java modules + # ======================================== # - name: mvn deploy working-directory: java run: | diff --git a/onebox/start_onebox.sh b/onebox/start_onebox.sh index 84bfdc6c34c..ff0c02568f9 100755 --- a/onebox/start_onebox.sh +++ b/onebox/start_onebox.sh @@ -15,7 +15,6 @@ # limitations under the License. set -eE -set -x cd "$(dirname "$0")/../" BASE=$(pwd) diff --git a/onebox/stop_all.sh b/onebox/stop_all.sh index 2916f9a1f45..c8eb2cc0c6e 100755 --- a/onebox/stop_all.sh +++ b/onebox/stop_all.sh @@ -15,6 +15,7 @@ # limitations under the License. set -e +shopt -s nullglob cd "$(dirname "$0")" diff --git a/steps/download_openmldb_spark.sh b/steps/download_openmldb_spark.sh index 3c48264dd2d..1797a22a83d 100755 --- a/steps/download_openmldb_spark.sh +++ b/steps/download_openmldb_spark.sh @@ -6,7 +6,7 @@ SPARK_HOME_PATH=$1 mkdir -p "$SPARK_HOME_PATH" # Download OpenMLDB Spark distribution -curl -L -o spark-3.0.0-bin-openmldbspark.tgz https://github.com/4paradigm/spark/releases/download/v3.0.0-openmldb0.4.0/spark-3.0.0-bin-openmldbspark.tgz +curl -L -o spark-3.0.0-bin-openmldbspark.tgz https://github.com/4paradigm/spark/releases/download/v3.2.1-openmldb0.8.2/spark-3.2.1-bin-openmldbspark.tgz tar xzf spark-3.0.0-bin-openmldbspark.tgz -C "$SPARK_HOME_PATH" --strip-components=1 From 91bb35520283e5de1b5f99e23a4f3fd5c588fb73 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Wed, 26 Jul 2023 15:55:43 +0800 Subject: [PATCH 18/21] test(jdbc): testing on mac --- java/openmldb-jdbc/pom.xml | 8 ++++++++ .../com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java | 7 ++++++- onebox/start_onebox.sh | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/java/openmldb-jdbc/pom.xml b/java/openmldb-jdbc/pom.xml index fe29c9c4905..6af9f0194d2 100644 --- a/java/openmldb-jdbc/pom.xml +++ b/java/openmldb-jdbc/pom.xml @@ -60,6 +60,14 @@ test + + org.apache.commons + commons-lang3 + 3.12.0 + test + + + diff --git a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java index 9b8c1add933..64bbc7de6f0 100644 --- a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java +++ b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java @@ -42,6 +42,7 @@ import java.util.Map; import java.util.NoSuchElementException; import java.util.Arrays; +import org.apache.commons.lang3.SystemUtils; public class SQLRouterSmokeTest { public static SqlExecutor clusterExecutor; @@ -272,7 +273,11 @@ public void testCreateFunction(SqlExecutor router) { try { // create function ok - statement.execute("CREATE FUNCTION cut2(x STRING) RETURNS STRING OPTIONS (FILE='libtest_udf.so')"); + if (SystemUtils.IS_OS_MAC) { + statement.execute("CREATE FUNCTION cut2(x STRING) RETURNS STRING OPTIONS (FILE='libtest_udf.dylib')"); + } else if (SystemUtils.IS_OS_LINUX) { + statement.execute("CREATE FUNCTION cut2(x STRING) RETURNS STRING OPTIONS (FILE='libtest_udf.so')"); + } Assert.assertTrue(statement.execute("SHOW FUNCTIONS")); // queryable diff --git a/onebox/start_onebox.sh b/onebox/start_onebox.sh index ff0c02568f9..dd7e58327d6 100755 --- a/onebox/start_onebox.sh +++ b/onebox/start_onebox.sh @@ -160,7 +160,7 @@ start_taskmanager() { chmod +x bin/*.sh # NOTE: taskmanager find shared libraraies in "/udf", where starts taskmanager matters mkdir -p udf/ - cp -v "$BASE/build/udf/"*.so udf/ + cp -v "$BASE/build/udf/"*.{so,dyllib} udf/ cp -v "$BASE/onebox/taskmanager.properties" conf/ LD_DEBUG=libs ./bin/taskmanager.sh > "$WORKSPACE/logs/taskmanager.log" 2>&1 & From ef4b5f6ac760b261dc787382e2d371103e883e07 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Wed, 26 Jul 2023 19:21:20 +0800 Subject: [PATCH 19/21] fix: start_onebox.sh --- onebox/start_onebox.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/onebox/start_onebox.sh b/onebox/start_onebox.sh index dd7e58327d6..07537d0d936 100755 --- a/onebox/start_onebox.sh +++ b/onebox/start_onebox.sh @@ -160,7 +160,7 @@ start_taskmanager() { chmod +x bin/*.sh # NOTE: taskmanager find shared libraraies in "/udf", where starts taskmanager matters mkdir -p udf/ - cp -v "$BASE/build/udf/"*.{so,dyllib} udf/ + cp -v "$BASE/build/udf/"*.{so,dyllib} udf/ || true cp -v "$BASE/onebox/taskmanager.properties" conf/ LD_DEBUG=libs ./bin/taskmanager.sh > "$WORKSPACE/logs/taskmanager.log" 2>&1 & From a184ed97a8aa042f193e25e7348235d28d44a767 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Thu, 27 Jul 2023 13:04:43 +0800 Subject: [PATCH 20/21] fix: start_onebox --- onebox/start_onebox.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/onebox/start_onebox.sh b/onebox/start_onebox.sh index 07537d0d936..21872c70d46 100755 --- a/onebox/start_onebox.sh +++ b/onebox/start_onebox.sh @@ -160,7 +160,7 @@ start_taskmanager() { chmod +x bin/*.sh # NOTE: taskmanager find shared libraraies in "/udf", where starts taskmanager matters mkdir -p udf/ - cp -v "$BASE/build/udf/"*.{so,dyllib} udf/ || true + cp -v "$BASE/build/udf/"*.{so,dylib} udf/ || true cp -v "$BASE/onebox/taskmanager.properties" conf/ LD_DEBUG=libs ./bin/taskmanager.sh > "$WORKSPACE/logs/taskmanager.log" 2>&1 & From 229d765ad298d10f053c261440c13f6a3a0d8d79 Mon Sep 17 00:00:00 2001 From: aceforeverd Date: Fri, 28 Jul 2023 10:55:47 +0000 Subject: [PATCH 21/21] feat(test): improve jdbc tests - assert expected exceptions with testng - upgrade testng to 7.5.1 - improve start_onebox.sh --- java/hybridse-sdk/pom.xml | 2 +- java/openmldb-batch/pom.xml | 2 +- java/openmldb-common/pom.xml | 4 +-- java/openmldb-jdbc/pom.xml | 3 +- .../openmldb/jdbc/JDBCDriverTest.java | 9 ++---- .../jdbc/RequestPreparedStatementTest.java | 3 +- .../openmldb/jdbc/SQLRouterSmokeTest.java | 29 +++++++++---------- .../openmldb/jdbc/StatementTest.java | 3 +- java/openmldb-spark-connector/pom.xml | 2 +- java/openmldb-taskmanager/pom.xml | 3 +- java/pom.xml | 2 ++ onebox/start_onebox.sh | 4 +++ 12 files changed, 31 insertions(+), 35 deletions(-) diff --git a/java/hybridse-sdk/pom.xml b/java/hybridse-sdk/pom.xml index e9b7a2fc9bd..d9268593816 100644 --- a/java/hybridse-sdk/pom.xml +++ b/java/hybridse-sdk/pom.xml @@ -72,7 +72,7 @@ org.testng testng - 6.14.3 + ${testng.version} test diff --git a/java/openmldb-batch/pom.xml b/java/openmldb-batch/pom.xml index 5fe4dfb31aa..174b84e4c32 100644 --- a/java/openmldb-batch/pom.xml +++ b/java/openmldb-batch/pom.xml @@ -107,7 +107,7 @@ org.testng testng - 6.14.3 + ${testng.version} test diff --git a/java/openmldb-common/pom.xml b/java/openmldb-common/pom.xml index d24d31c44a6..a614b98cb05 100644 --- a/java/openmldb-common/pom.xml +++ b/java/openmldb-common/pom.xml @@ -44,7 +44,7 @@ org.testng testng - 6.14.3 + ${testng.version} test @@ -59,4 +59,4 @@ - \ No newline at end of file + diff --git a/java/openmldb-jdbc/pom.xml b/java/openmldb-jdbc/pom.xml index 6af9f0194d2..dd3b576c30f 100644 --- a/java/openmldb-jdbc/pom.xml +++ b/java/openmldb-jdbc/pom.xml @@ -52,11 +52,10 @@ 2.17.2 - org.testng testng - 6.14.3 + ${testng.version} test diff --git a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/JDBCDriverTest.java b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/JDBCDriverTest.java index 5c62bca51dc..1ad78233239 100644 --- a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/JDBCDriverTest.java +++ b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/JDBCDriverTest.java @@ -60,8 +60,7 @@ public void connection() { connection = DriverManager.getConnection( String.format("jdbc:openmldb:///%s?zk=%s&zkPath=%s&zkLogLevel=0", dbName, zk, zkPath)); } catch (SQLException | ClassNotFoundException e) { - e.printStackTrace(); - Assert.fail("jdbc connection failed"); + Assert.fail("jdbc connection failed", e); } } @@ -162,8 +161,7 @@ public void testForPulsarConnector() throws SQLException { deleteStatement.setInt(1, 1); deleteStatement.execute(); } catch (Exception e) { - e.printStackTrace(); - Assert.fail(); + Assert.fail("catched exception", e); } // useless but won't fail @@ -227,8 +225,7 @@ public void testForKafkaConnector() throws SQLException { .prepareStatement("DELETE FROM " + tableName + " WHERE c1=?"); preparedStatement.setInt(1, 1); } catch (Exception e) { - e.printStackTrace(); - Assert.fail(); + Assert.fail("catched exception", e); } // sink, catalog and schema patterns are always be null diff --git a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/RequestPreparedStatementTest.java b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/RequestPreparedStatementTest.java index f761138cb49..428e24de984 100644 --- a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/RequestPreparedStatementTest.java +++ b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/RequestPreparedStatementTest.java @@ -113,8 +113,7 @@ public void testRequest() { ok = executor.dropDB(dbname); Assert.assertTrue(ok); } catch (Exception e) { - e.printStackTrace(); - Assert.fail(); + Assert.fail("catched exception", e); } finally { try { if (resultSet != null) { diff --git a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java index 64bbc7de6f0..5eb21f19ea1 100644 --- a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java +++ b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/SQLRouterSmokeTest.java @@ -66,7 +66,7 @@ public class SQLRouterSmokeTest { standaloneOption.setSessionTimeout(20000); standaloneExecutor = new SqlClusterExecutor(standaloneOption); } catch (Exception e) { - e.printStackTrace(); + Assert.fail("cathed exception", e); } } @@ -262,8 +262,7 @@ public void testSmoke(SqlExecutor router) { ok = router.dropDB(dbname); Assert.assertTrue(ok); } catch (Exception e) { - e.printStackTrace(); - Assert.fail(); + Assert.fail("cathed exception", e); } } @@ -282,7 +281,7 @@ public void testCreateFunction(SqlExecutor router) { // queryable { - // FIXME: offline mode is not good for testing + // // disabled due to #3405 // statement.execute("set session execute_mode='offline'"); // statement.execute("set global sync_job=true"); // Assert.assertTrue(statement.execute("select cut2('hello')")); @@ -301,8 +300,7 @@ public void testCreateFunction(SqlExecutor router) { Assert.assertEquals(result, "he"); } } catch (Exception e) { - e.printStackTrace(); - Assert.fail(); + Assert.fail("cathed exception", e); } finally { // dropable try { @@ -313,15 +311,15 @@ public void testCreateFunction(SqlExecutor router) { } } - @Test(dataProvider = "executor") - public void testParameterizedQueryFail(SqlExecutor router) { + @Test(dataProvider = "executor", expectedExceptions = java.sql.SQLException.class, expectedExceptionsMessageRegExp = ".*Fail to get parameter type with position 2") + public void testParameterizedQueryFail(SqlExecutor router) throws SQLException{ + String dbname = "SQLRouterSmokeTest" + System.currentTimeMillis(); + String ddl = "create table tsql1010 ( col1 bigint, col2 string, index(key=col2, ts=col1));"; try { - String dbname = "SQLRouterSmokeTest" + System.currentTimeMillis(); // create db router.dropDB(dbname); boolean ok = router.createDB(dbname); Assert.assertTrue(ok); - String ddl = "create table tsql1010 ( col1 bigint, col2 string, index(key=col2, ts=col1));"; // create table ok = router.executeDDL(dbname, ddl); Assert.assertTrue(ok); @@ -336,8 +334,9 @@ public void testParameterizedQueryFail(SqlExecutor router) { Assert.fail("executeQuery is expected to throw exception"); rs4.close(); } - } catch (Exception e) { - e.printStackTrace(); + } finally { + router.executeSQL(dbname, "drop table tsql1010"); + router.dropDB(dbname); } } @@ -514,8 +513,7 @@ public void testInsertPreparedState(SqlExecutor router) { ok = router.dropDB(dbname); Assert.assertTrue(ok); } catch (Exception e) { - e.printStackTrace(); - Assert.fail(); + Assert.fail("cathed exception", e); } } @@ -650,8 +648,7 @@ public void testInsertPreparedStateBatch(SqlExecutor router) { ok = router.dropDB(dbname); Assert.assertTrue(ok); } catch (Exception e) { - e.printStackTrace(); - Assert.fail(); + Assert.fail("cathed exception", e); } } diff --git a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/StatementTest.java b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/StatementTest.java index a369fd3fdc8..537f22ca5a9 100644 --- a/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/StatementTest.java +++ b/java/openmldb-jdbc/src/test/java/com/_4paradigm/openmldb/jdbc/StatementTest.java @@ -121,8 +121,7 @@ public void testExecute() { Assert.assertEquals(result.get(1000L), "hello"); Assert.assertEquals(result.get(1001L), "xxxx"); } catch (Exception e) { - e.printStackTrace(); - Assert.fail(); + Assert.fail("catched exception", e); } finally { try { state.close(); diff --git a/java/openmldb-spark-connector/pom.xml b/java/openmldb-spark-connector/pom.xml index e36ad745b71..6c7c6ffebc4 100644 --- a/java/openmldb-spark-connector/pom.xml +++ b/java/openmldb-spark-connector/pom.xml @@ -41,7 +41,7 @@ org.testng testng - 6.14.3 + ${testng.version} test diff --git a/java/openmldb-taskmanager/pom.xml b/java/openmldb-taskmanager/pom.xml index 7e9ddaa3c5b..e610b782131 100644 --- a/java/openmldb-taskmanager/pom.xml +++ b/java/openmldb-taskmanager/pom.xml @@ -98,11 +98,10 @@ log4j-to-slf4j 2.13.2 - org.testng testng - 6.14.3 + ${testng.version} test diff --git a/java/pom.xml b/java/pom.xml index 84206d8bea2..59f435d668f 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -79,6 +79,8 @@ true + + 7.5.1 diff --git a/onebox/start_onebox.sh b/onebox/start_onebox.sh index 21872c70d46..4f40a98c89b 100755 --- a/onebox/start_onebox.sh +++ b/onebox/start_onebox.sh @@ -113,6 +113,8 @@ cluster_start_component() { "${extra_opts[@]}" > "$WORKSPACE/$canon_name.log" 2>&1 & echo $! > "$WORKSPACE/run/$canon_name.pid" + + echo "started $role at $endpoint" } ZK_CLUSTER=$IP:6181 @@ -166,6 +168,8 @@ start_taskmanager() { LD_DEBUG=libs ./bin/taskmanager.sh > "$WORKSPACE/logs/taskmanager.log" 2>&1 & echo $! > "$WORKSPACE/run/taskmanager.pid" popd + + echo "started taskmanager" } SA_NS=$IP:6527