From 62d3760488120f3f41f42078cbecda4febc3ffd5 Mon Sep 17 00:00:00 2001 From: morningman Date: Fri, 21 Feb 2025 11:29:53 +0800 Subject: [PATCH 1/5] [opt](jni) print final java opt for jni in BE log for debugging --- be/src/util/jni-util.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/be/src/util/jni-util.cpp b/be/src/util/jni-util.cpp index 188656c398b98d..c2abe43efd417b 100644 --- a/be/src/util/jni-util.cpp +++ b/be/src/util/jni-util.cpp @@ -114,6 +114,7 @@ const std::string GetKerb5ConfPath() { libhdfs_opts += fmt::format("{} ", GetKerb5ConfPath()); setenv("LIBHDFS_OPTS", libhdfs_opts.c_str(), 1); + LOG(INFO) << "set final LIBHDFS_OPTS: " << libhdfs_opts; } // Only used on non-x86 platform From 44583d5b3984504bc13b3061057ae341f8b6f9ed Mon Sep 17 00:00:00 2001 From: morningman Date: Fri, 21 Feb 2025 11:54:16 +0800 Subject: [PATCH 2/5] [fix](java) should use JAVA_OPTS_FOR_JDK_17 instead of JAVA_OPTS --- be/src/util/jni-util.cpp | 23 ++++------------------- bin/start_be.sh | 3 ++- bin/start_fe.sh | 1 + conf/be.conf | 3 --- conf/fe.conf | 3 --- 5 files changed, 7 insertions(+), 26 deletions(-) diff --git a/be/src/util/jni-util.cpp b/be/src/util/jni-util.cpp index c2abe43efd417b..585ecf9187d61a 100644 --- a/be/src/util/jni-util.cpp +++ b/be/src/util/jni-util.cpp @@ -96,24 +96,9 @@ const std::string GetKerb5ConfPath() { return "-Djava.security.krb5.conf=" + config::kerberos_krb5_conf_path; } -[[maybe_unused]] void SetEnvIfNecessary() { - const auto* doris_home = getenv("DORIS_HOME"); - DCHECK(doris_home) << "Environment variable DORIS_HOME is not set."; - - // CLASSPATH - const std::string original_classpath = getenv("CLASSPATH") ? getenv("CLASSPATH") : ""; - static const std::string classpath = fmt::format( - "{}/conf:{}:{}", doris_home, GetDorisJNIDefaultClasspath(), original_classpath); - setenv("CLASSPATH", classpath.c_str(), 0); - - // LIBHDFS_OPTS - const std::string java_opts = getenv("JAVA_OPTS") ? getenv("JAVA_OPTS") : ""; - std::string libhdfs_opts = - fmt::format("{} -Djava.library.path={}/lib/hadoop_hdfs/native:{} ", java_opts, - getenv("DORIS_HOME"), getenv("DORIS_HOME") + std::string("/lib")); - libhdfs_opts += fmt::format("{} ", GetKerb5ConfPath()); - - setenv("LIBHDFS_OPTS", libhdfs_opts.c_str(), 1); +[[maybe_unused]] void CheckJniEnv() { + const std::string libhdfs_opts = getenv("LIBHDFS_OPTS") ? getenv("LIBHDFS_OPTS") : ""; + CHECK(libhdfs_opts != "") << "LIBHDFS_OPTS is not set"; LOG(INFO) << "set final LIBHDFS_OPTS: " << libhdfs_opts; } @@ -278,7 +263,7 @@ Status JniUtil::GetJNIEnvSlowPath(JNIEnv** env) { } #else // the hadoop libhdfs will do all the stuff - SetEnvIfNecessary(); + CheckJniEnv(); tls_env_ = getJNIEnv(); #endif *env = tls_env_; diff --git a/bin/start_be.sh b/bin/start_be.sh index de1fea82d385ad..db8638bcf8e0cc 100755 --- a/bin/start_be.sh +++ b/bin/start_be.sh @@ -418,7 +418,8 @@ fi # set LIBHDFS_OPTS for hadoop libhdfs export LIBHDFS_OPTS="${final_java_opt}" - +export JAVA_OPTS="${final_java_opt}" +n # log "CLASSPATH: ${CLASSPATH}" # log "LD_LIBRARY_PATH: ${LD_LIBRARY_PATH}" # log "LIBHDFS_OPTS: ${LIBHDFS_OPTS}" diff --git a/bin/start_fe.sh b/bin/start_fe.sh index 5ae69867329c11..4a728787a828bb 100755 --- a/bin/start_fe.sh +++ b/bin/start_fe.sh @@ -204,6 +204,7 @@ else fi log "Using Java version ${java_version}" log "${final_java_opt}" +export JAVA_OPTS="${final_java_opt}" # add libs to CLASSPATH DORIS_FE_JAR= diff --git a/conf/be.conf b/conf/be.conf index ddbc385522e848..bd01e4222f9c4f 100644 --- a/conf/be.conf +++ b/conf/be.conf @@ -20,9 +20,6 @@ CUR_DATE=`date +%Y%m%d-%H%M%S` # Log dir LOG_DIR="${DORIS_HOME}/log/" -# For jdk 8 -JAVA_OPTS="-Dfile.encoding=UTF-8 -Xmx2048m -DlogPath=$LOG_DIR/jni.log -Xloggc:$LOG_DIR/be.gc.log.$CUR_DATE -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=50M -Djavax.security.auth.useSubjectCredsOnly=false -Dsun.security.krb5.debug=true -Dsun.java.command=DorisBE -XX:-CriticalJNINatives" - # For jdk 17, this JAVA_OPTS will be used as default JVM options JAVA_OPTS_FOR_JDK_17="-Dfile.encoding=UTF-8 -Djol.skipHotspotSAAttach=true -Xmx2048m -DlogPath=$LOG_DIR/jni.log -Xlog:gc*:$LOG_DIR/be.gc.log.$CUR_DATE:time,uptime:filecount=10,filesize=50M -Djavax.security.auth.useSubjectCredsOnly=false -Dsun.security.krb5.debug=true -Dsun.java.command=DorisBE -XX:-CriticalJNINatives -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED --add-opens=java.management/sun.management=ALL-UNNAMED -Darrow.enable_null_check_for_get=false" diff --git a/conf/fe.conf b/conf/fe.conf index 72734a86733a31..5db098f289f0ce 100644 --- a/conf/fe.conf +++ b/conf/fe.conf @@ -26,9 +26,6 @@ CUR_DATE=`date +%Y%m%d-%H%M%S` # Log dir LOG_DIR = ${DORIS_HOME}/log -# For jdk 8 -JAVA_OPTS="-Dfile.encoding=UTF-8 -Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx8192m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintClassHistogramAfterFullGC -Xloggc:$LOG_DIR/log/fe.gc.log.$CUR_DATE -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=50M -Dlog4j2.formatMsgNoLookups=true" - # For jdk 17, this JAVA_OPTS will be used as default JVM options JAVA_OPTS_FOR_JDK_17="-Dfile.encoding=UTF-8 -Djavax.security.auth.useSubjectCredsOnly=false -Xmx8192m -Xms8192m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_DIR -Xlog:gc*,classhisto*=trace:$LOG_DIR/fe.gc.log.$CUR_DATE:time,uptime:filecount=10,filesize=50M --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens java.base/jdk.internal.ref=ALL-UNNAMED" From 12b27ccdc54e54c22dea9cbb1afc6e68559ec7e9 Mon Sep 17 00:00:00 2001 From: morningman Date: Fri, 21 Feb 2025 12:05:12 +0800 Subject: [PATCH 3/5] 2 --- be/src/util/jni-util.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/be/src/util/jni-util.cpp b/be/src/util/jni-util.cpp index 585ecf9187d61a..ca4ae7dcd23192 100644 --- a/be/src/util/jni-util.cpp +++ b/be/src/util/jni-util.cpp @@ -96,9 +96,11 @@ const std::string GetKerb5ConfPath() { return "-Djava.security.krb5.conf=" + config::kerberos_krb5_conf_path; } -[[maybe_unused]] void CheckJniEnv() { +[[maybe_unused]] void SetEnvIfNecessary() { const std::string libhdfs_opts = getenv("LIBHDFS_OPTS") ? getenv("LIBHDFS_OPTS") : ""; CHECK(libhdfs_opts != "") << "LIBHDFS_OPTS is not set"; + libhdfs_opts += fmt::format(" {} ", GetKerb5ConfPath()); + setenv("LIBHDFS_OPTS", libhdfs_opts.c_str(), 1); LOG(INFO) << "set final LIBHDFS_OPTS: " << libhdfs_opts; } @@ -263,7 +265,7 @@ Status JniUtil::GetJNIEnvSlowPath(JNIEnv** env) { } #else // the hadoop libhdfs will do all the stuff - CheckJniEnv(); + SetEnvIfNecessary(); tls_env_ = getJNIEnv(); #endif *env = tls_env_; From 0432c4e47183bee66d6b1efc82066570b852882b Mon Sep 17 00:00:00 2001 From: morningman Date: Fri, 21 Feb 2025 12:29:38 +0800 Subject: [PATCH 4/5] 2 --- be/src/util/jni-util.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/be/src/util/jni-util.cpp b/be/src/util/jni-util.cpp index ca4ae7dcd23192..a2456544ffcdc0 100644 --- a/be/src/util/jni-util.cpp +++ b/be/src/util/jni-util.cpp @@ -97,7 +97,7 @@ const std::string GetKerb5ConfPath() { } [[maybe_unused]] void SetEnvIfNecessary() { - const std::string libhdfs_opts = getenv("LIBHDFS_OPTS") ? getenv("LIBHDFS_OPTS") : ""; + std::string libhdfs_opts = getenv("LIBHDFS_OPTS") ? getenv("LIBHDFS_OPTS") : ""; CHECK(libhdfs_opts != "") << "LIBHDFS_OPTS is not set"; libhdfs_opts += fmt::format(" {} ", GetKerb5ConfPath()); setenv("LIBHDFS_OPTS", libhdfs_opts.c_str(), 1); From 6b323a63046dd80bd3ed6f261429a60ac0bde68b Mon Sep 17 00:00:00 2001 From: morningman Date: Mon, 24 Feb 2025 11:52:49 +0800 Subject: [PATCH 5/5] fix --- bin/start_be.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/start_be.sh b/bin/start_be.sh index db8638bcf8e0cc..391885ecde789f 100755 --- a/bin/start_be.sh +++ b/bin/start_be.sh @@ -419,7 +419,7 @@ fi # set LIBHDFS_OPTS for hadoop libhdfs export LIBHDFS_OPTS="${final_java_opt}" export JAVA_OPTS="${final_java_opt}" -n + # log "CLASSPATH: ${CLASSPATH}" # log "LD_LIBRARY_PATH: ${LD_LIBRARY_PATH}" # log "LIBHDFS_OPTS: ${LIBHDFS_OPTS}"