You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2025/12/18 10:13:16 UTC

(doris) branch branch-3.1 updated: branch-3.1: [opt](jvm) add more --add-opens #58936 #59073 (#59024)

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

morrysnow pushed a commit to branch branch-3.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-3.1 by this push:
     new ec7c4b7248d branch-3.1: [opt](jvm) add more --add-opens #58936 #59073 (#59024)
ec7c4b7248d is described below

commit ec7c4b7248db988f1cf213db59a8c2aad5e23f50
Author: Mingyu Chen (Rayner) <mo...@163.com>
AuthorDate: Thu Dec 18 18:13:07 2025 +0800

    branch-3.1: [opt](jvm) add more --add-opens #58936 #59073 (#59024)
    
    bp #58936 #59073
---
 bin/start_be.sh                                | 126 ++++++++++++++++++++++++-
 bin/start_fe.sh                                | 124 ++++++++++++++++++++++++
 conf/be.conf                                   |   5 +-
 conf/fe.conf                                   |   5 +-
 regression-test/pipeline/external/conf/be.conf |   2 +-
 regression-test/pipeline/external/conf/fe.conf |   5 +-
 regression-test/pipeline/p0/conf/be.conf       |   2 +-
 regression-test/pipeline/p0/conf/fe.conf       |   2 +-
 regression-test/pipeline/p1/conf/be.conf       |   2 +-
 regression-test/pipeline/p1/conf/fe.conf       |   2 +-
 10 files changed, 257 insertions(+), 18 deletions(-)

diff --git a/bin/start_be.sh b/bin/start_be.sh
index fec1eb01723..7d8e837b544 100755
--- a/bin/start_be.sh
+++ b/bin/start_be.sh
@@ -393,7 +393,7 @@ COMMON_OPTS="-Dsun.java.command=DorisBE -XX:-CriticalJNINatives"
 
 if [[ "${java_version}" -eq 17 ]]; then
     if [[ -z ${JAVA_OPTS_FOR_JDK_17} ]]; then
-        JAVA_OPTS_FOR_JDK_17="-Xmx1024m ${LOG_PATH} -Xlog:gc:${DORIS_HOME}/log/be.gc.log.${CUR_DATE} ${COMMON_OPTS} --add-opens=java.base/java.net=ALL-UNNAMED"
+        JAVA_OPTS_FOR_JDK_17="-Xmx1024m ${LOG_PATH} -Xlog:gc:${DORIS_HOME}/log/be.gc.log.${CUR_DATE} ${COMMON_OPTS} --add-opens java.base/java.net=ALL-UNNAMED"
     fi
     final_java_opt="${JAVA_OPTS_FOR_JDK_17}"
 else
@@ -413,6 +413,130 @@ if [[ "${MACHINE_OS}" == "Darwin" ]]; then
     fi
 fi
 
+# Extract the matching key from a Java option for deduplication purposes.
+# Different option types have different key extraction rules:
+#   --add-opens java.base/sun.util.calendar=ALL-UNNAMED -> --add-opens java.base/sun.util.calendar
+#   -XX:+HeapDumpOnOutOfMemoryError                     -> -XX:[+-]HeapDumpOnOutOfMemoryError
+#   -XX:HeapDumpPath=/path                              -> -XX:HeapDumpPath
+#   -Dfile.encoding=UTF-8                               -> -Dfile.encoding
+#   -Xmx8192m                                           -> -Xmx
+extract_java_opt_key() {
+    local param="$1"
+
+    case "${param}" in
+        "--add-opens "* | "--add-exports="* | "--add-reads="* | "--add-modules="*)
+            # --add-opens java.base/sun.util.calendar=ALL-UNNAMED
+            # Extract module/package path as key: --add-opens java.base/sun.util.calendar
+            echo "${param%=*}"
+            ;;
+        -XX:+* | -XX:-*)
+            # -XX:+HeapDumpOnOutOfMemoryError or -XX:-OmitStackTraceInFastThrow
+            # Extract flag name for pattern matching: -XX:[+-]FlagName
+            local flag_name="${param#-XX:?}"
+            echo "-XX:[+-]${flag_name}"
+            ;;
+        -XX:*=*)
+            # -XX:HeapDumpPath=/path or -XX:OnOutOfMemoryError="cmd"
+            # Extract key before '=': -XX:HeapDumpPath
+            echo "${param%%=*}"
+            ;;
+        -D*=*)
+            # -Dfile.encoding=UTF-8
+            # Extract property name: -Dfile.encoding
+            echo "${param%%=*}"
+            ;;
+        -D*)
+            # -Dfoo (boolean property without value)
+            echo "${param}"
+            ;;
+        -Xms* | -Xmx* | -Xmn* | -Xss*)
+            # -Xmx8192m, -Xms8192m, -Xmn2g, -Xss512k
+            # Extract the prefix: -Xmx, -Xms, -Xmn, -Xss
+            echo "${param}" | sed -E 's/^(-Xm[sxn]|-Xss).*/\1/'
+            ;;
+        -Xlog:*)
+            # -Xlog:gc*:file:decorators
+            # Use prefix as key
+            echo "-Xlog:"
+            ;;
+        *)
+            # For other options, use the full parameter as key
+            echo "${param}"
+            ;;
+    esac
+}
+
+# Check if a Java option already exists in the options string.
+# Arguments:
+#   $1 - The full java options string
+#   $2 - The option to check
+# Returns: 0 if exists, 1 if not exists
+java_opt_exists() {
+    local java_opts="$1"
+    local param="$2"
+    local key
+    key="$(extract_java_opt_key "${param}")"
+
+    # For -XX:[+-] boolean flags, use regex matching
+    if [[ "${key}" =~ ^\-XX:\[\+\-\](.+)$ ]]; then
+        local flag_name="${BASH_REMATCH[1]}"
+        # Add spaces around to ensure word boundary matching
+        if echo " ${java_opts} " | grep -qE " -XX:[+-]${flag_name}( |$)"; then
+            return 0
+        fi
+    else
+        # For other options, use fixed string matching
+        # Add spaces around to ensure word boundary matching
+        if echo " ${java_opts} " | grep -qF " ${key}"; then
+            return 0
+        fi
+    fi
+    return 1
+}
+
+# Add a Java option to final_java_opt if it doesn't already exist.
+# This function modifies the global variable 'final_java_opt'.
+# Arguments:
+#   $1 - The option to add
+# Usage:
+#   add_java_opt_if_missing "--add-opens java.base/sun.util.calendar=ALL-UNNAMED"
+#   add_java_opt_if_missing "-XX:+HeapDumpOnOutOfMemoryError"
+#   add_java_opt_if_missing "-Dfile.encoding=UTF-8"
+add_java_opt_if_missing() {
+    local param="$1"
+    if ! java_opt_exists "${final_java_opt}" "${param}"; then
+        final_java_opt="${final_java_opt} ${param}"
+        log "Added missing Java option: ${param}"
+    fi
+}
+
+# Add essential Java options if they are not already present in final_java_opt.
+# Users can customize JAVA_OPTS_FOR_JDK_17 in fe.conf, but these options ensure
+# basic functionality and compatibility.
+add_java_opt_if_missing "-Dhadoop.shell.setsid.enabled=false"
+add_java_opt_if_missing "-Darrow.enable_null_check_for_get=false"
+add_java_opt_if_missing "-Djol.skipHotspotSAAttach=true"
+add_java_opt_if_missing "-Djavax.security.auth.useSubjectCredsOnly=false"
+add_java_opt_if_missing "-Dsun.security.krb5.debug=true"
+add_java_opt_if_missing "-Dfile.encoding=UTF-8"
+add_java_opt_if_missing "--add-opens java.base/java.lang=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.lang.invoke=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.lang.reflect=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.io=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.net=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.nio=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.util=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.util.concurrent=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/sun.nio.ch=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/sun.nio.cs=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/sun.security.action=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/sun.util.calendar=ALL-UNNAME"
+add_java_opt_if_missing "--add-opens java.security.jgss/sun.security.krb5=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.management/sun.management=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/jdk.internal.ref=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED"
+
 # set LIBHDFS_OPTS for hadoop libhdfs
 export LIBHDFS_OPTS="${final_java_opt}"
 export JAVA_OPTS="${final_java_opt}"
diff --git a/bin/start_fe.sh b/bin/start_fe.sh
index 2fd0920df63..c04c3c55537 100755
--- a/bin/start_fe.sh
+++ b/bin/start_fe.sh
@@ -187,6 +187,103 @@ log() {
     fi
 }
 
+# Extract the matching key from a Java option for deduplication purposes.
+# Different option types have different key extraction rules:
+#   --add-opens java.base/sun.util.calendar=ALL-UNNAMED -> --add-opens java.base/sun.util.calendar
+#   -XX:+HeapDumpOnOutOfMemoryError                     -> -XX:[+-]HeapDumpOnOutOfMemoryError
+#   -XX:HeapDumpPath=/path                              -> -XX:HeapDumpPath
+#   -Dfile.encoding=UTF-8                               -> -Dfile.encoding
+#   -Xmx8192m                                           -> -Xmx
+extract_java_opt_key() {
+    local param="$1"
+
+    case "${param}" in
+        "--add-opens "* | "--add-exports="* | "--add-reads="* | "--add-modules="*)
+            # --add-opens java.base/sun.util.calendar=ALL-UNNAMED
+            # Extract module/package path as key: --add-opens java.base/sun.util.calendar
+            echo "${param%=*}"
+            ;;
+        -XX:+* | -XX:-*)
+            # -XX:+HeapDumpOnOutOfMemoryError or -XX:-OmitStackTraceInFastThrow
+            # Extract flag name for pattern matching: -XX:[+-]FlagName
+            local flag_name="${param#-XX:?}"
+            echo "-XX:[+-]${flag_name}"
+            ;;
+        -XX:*=*)
+            # -XX:HeapDumpPath=/path or -XX:OnOutOfMemoryError="cmd"
+            # Extract key before '=': -XX:HeapDumpPath
+            echo "${param%%=*}"
+            ;;
+        -D*=*)
+            # -Dfile.encoding=UTF-8
+            # Extract property name: -Dfile.encoding
+            echo "${param%%=*}"
+            ;;
+        -D*)
+            # -Dfoo (boolean property without value)
+            echo "${param}"
+            ;;
+        -Xms* | -Xmx* | -Xmn* | -Xss*)
+            # -Xmx8192m, -Xms8192m, -Xmn2g, -Xss512k
+            # Extract the prefix: -Xmx, -Xms, -Xmn, -Xss
+            echo "${param}" | sed -E 's/^(-Xm[sxn]|-Xss).*/\1/'
+            ;;
+        -Xlog:*)
+            # -Xlog:gc*:file:decorators
+            # Use prefix as key
+            echo "-Xlog:"
+            ;;
+        *)
+            # For other options, use the full parameter as key
+            echo "${param}"
+            ;;
+    esac
+}
+
+# Check if a Java option already exists in the options string.
+# Arguments:
+#   $1 - The full java options string
+#   $2 - The option to check
+# Returns: 0 if exists, 1 if not exists
+java_opt_exists() {
+    local java_opts="$1"
+    local param="$2"
+    local key
+    key="$(extract_java_opt_key "${param}")"
+
+    # For -XX:[+-] boolean flags, use regex matching
+    if [[ "${key}" =~ ^\-XX:\[\+\-\](.+)$ ]]; then
+        local flag_name="${BASH_REMATCH[1]}"
+        # Add spaces around to ensure word boundary matching
+        if echo " ${java_opts} " | grep -qE " -XX:[+-]${flag_name}( |$)"; then
+            return 0
+        fi
+    else
+        # For other options, use fixed string matching
+        # Add spaces around to ensure word boundary matching
+        if echo " ${java_opts} " | grep -qF " ${key}"; then
+            return 0
+        fi
+    fi
+    return 1
+}
+
+# Add a Java option to final_java_opt if it doesn't already exist.
+# This function modifies the global variable 'final_java_opt'.
+# Arguments:
+#   $1 - The option to add
+# Usage:
+#   add_java_opt_if_missing "--add-opens java.base/sun.util.calendar=ALL-UNNAMED"
+#   add_java_opt_if_missing "-XX:+HeapDumpOnOutOfMemoryError"
+#   add_java_opt_if_missing "-Dfile.encoding=UTF-8"
+add_java_opt_if_missing() {
+    local param="$1"
+    if ! java_opt_exists "${final_java_opt}" "${param}"; then
+        final_java_opt="${final_java_opt} ${param}"
+        log "Added missing Java option: ${param}"
+    fi
+}
+
 # check java version and choose correct JAVA_OPTS
 java_version="$(
     set -e
@@ -203,6 +300,33 @@ else
     exit 1
 fi
 log "Using Java version ${java_version}"
+
+# Add essential Java options if they are not already present in final_java_opt.
+# Users can customize JAVA_OPTS_FOR_JDK_17 in fe.conf, but these options ensure
+# basic functionality and compatibility.
+add_java_opt_if_missing "-Dhadoop.shell.setsid.enabled=false"
+add_java_opt_if_missing "-Darrow.enable_null_check_for_get=false"
+add_java_opt_if_missing "-Djavax.security.auth.useSubjectCredsOnly=false"
+add_java_opt_if_missing "-Dsun.security.krb5.debug=true"
+add_java_opt_if_missing "-Dfile.encoding=UTF-8"
+add_java_opt_if_missing "--add-opens java.base/java.lang=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.lang.invoke=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.lang.reflect=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.io=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.net=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.nio=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.util=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.util.concurrent=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/sun.nio.ch=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/sun.nio.cs=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/sun.security.action=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/sun.util.calendar=ALL-UNNAME"
+add_java_opt_if_missing "--add-opens java.security.jgss/sun.security.krb5=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.management/sun.management=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.base/jdk.internal.ref=ALL-UNNAMED"
+add_java_opt_if_missing "--add-opens java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED"
+
 log "${final_java_opt}"
 export JAVA_OPTS="${final_java_opt}"
 
diff --git a/conf/be.conf b/conf/be.conf
index aca7e641676..8f829ffda58 100644
--- a/conf/be.conf
+++ b/conf/be.conf
@@ -20,11 +20,8 @@ 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-U [...]
+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 -Darrow.enable_null_check_for_get=false --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add [...]
 
 # Set your own JAVA_HOME
 # JAVA_HOME=/path/to/jdk/
diff --git a/conf/fe.conf b/conf/fe.conf
index b02e5abc6b7..7bddd2bcd6b 100644
--- a/conf/fe.conf
+++ b/conf/fe.conf
@@ -26,11 +26,8 @@ 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:+UseG1GC -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 --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED"
+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 -Darrow.enable_null_check_for_get=false --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-UNNAME [...]
 
 # Set your own JAVA_HOME
 # JAVA_HOME=/path/to/jdk/
diff --git a/regression-test/pipeline/external/conf/be.conf b/regression-test/pipeline/external/conf/be.conf
index 93907c43982..9728f8ecee5 100644
--- a/regression-test/pipeline/external/conf/be.conf
+++ b/regression-test/pipeline/external/conf/be.conf
@@ -23,7 +23,7 @@ PPROF_TMPDIR="$DORIS_HOME/log/"
 JAVA_OPTS="-Xcheck:jni -Xmx2048m -DlogPath=$DORIS_HOME/log/jni.log -Xloggc:$DORIS_HOME/log/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 -Dcom.mysql.cj.disableAbandonedConnectionCleanup=true"
 
 # For jdk 17, this JAVA_OPTS will be used as default JVM options
-JAVA_OPTS_FOR_JDK_17="-Xcheck:jni -Xmx2048m -DlogPath=$DORIS_HOME/log/jni.log -Xlog:gc*:$DORIS_HOME/log/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.bas [...]
+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 -Darrow.enable_null_check_for_get=false --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add [...]
 
 # Set your own JAVA_HOME
 # JAVA_HOME=/path/to/jdk/
diff --git a/regression-test/pipeline/external/conf/fe.conf b/regression-test/pipeline/external/conf/fe.conf
index 505563a21e1..adc88801872 100644
--- a/regression-test/pipeline/external/conf/fe.conf
+++ b/regression-test/pipeline/external/conf/fe.conf
@@ -27,11 +27,8 @@ LOG_DIR = ${DORIS_HOME}/log
 DATE = `date +%Y%m%d-%H%M%S`
 JAVA_OPTS="-Xmx4096m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$DORIS_HOME/log/fe.jmap -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintClassHistogramAfterFullGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$DORIS_HOME/log/fe.gc.log.$DATE -Dcom.mysql.cj.disableAbandonedConnectionCleanup=true"
 
-# For jdk 9+, this JAVA_OPTS will be used as default JVM options
-JAVA_OPTS_FOR_JDK_9="-Xmx4096m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$DORIS_HOME/log/fe.jmap -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xlog:gc*:$DORIS_HOME/log/fe.gc.log.$DATE:time -Dcom.mysql.cj.disableAbandonedConnectionCleanup=true"
-
 # For jdk 17+, this JAVA_OPTS will be used as default JVM options
-JAVA_OPTS_FOR_JDK_17="-Djavax.security.auth.useSubjectCredsOnly=false -Xmx8192m -Xms8192m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$DORIS_HOME/log/ -Xlog:gc*,classhisto*=trace:$DORIS_HOME/log/fe.gc.log.$CUR_DATE:time -Dcom.mysql.cj.disableAbandonedConnectionCleanup=true"
+JAVA_OPTS_FOR_JDK_17="-Dfile.encoding=UTF-8 -Djavax.security.auth.useSubjectCredsOnly=false -Xmx8192m -Xms8192m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_DIR -Xlog:gc*,classhisto*=trace:$LOG_DIR/fe.gc.log.$CUR_DATE:time,uptime:filecount=10,filesize=50M -Darrow.enable_null_check_for_get=false --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. [...]
 
 ##
 ## the lowercase properties are read by main program.
diff --git a/regression-test/pipeline/p0/conf/be.conf b/regression-test/pipeline/p0/conf/be.conf
index 09dddd3c2d0..41fc2f37967 100644
--- a/regression-test/pipeline/p0/conf/be.conf
+++ b/regression-test/pipeline/p0/conf/be.conf
@@ -23,7 +23,7 @@ PPROF_TMPDIR="$DORIS_HOME/log/"
 JAVA_OPTS="-Xcheck:jni -Xmx1024m -DlogPath=$DORIS_HOME/log/jni.log -Xloggc:$DORIS_HOME/log/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 -Dcom.mysql.cj.disableAbandonedConnectionCleanup=true"
 
 # For jdk 17, this JAVA_OPTS will be used as default JVM options
-JAVA_OPTS_FOR_JDK_17="-Xcheck:jni -Xmx1024m -DlogPath=$DORIS_HOME/log/jni.log -Xlog:gc*:$DORIS_HOME/log/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.bas [...]
+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 -Darrow.enable_null_check_for_get=false --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add [...]
 
 # Set your own JAVA_HOME
 # JAVA_HOME=/path/to/jdk/
diff --git a/regression-test/pipeline/p0/conf/fe.conf b/regression-test/pipeline/p0/conf/fe.conf
index 5816d8f1f12..bab603d78a9 100644
--- a/regression-test/pipeline/p0/conf/fe.conf
+++ b/regression-test/pipeline/p0/conf/fe.conf
@@ -30,7 +30,7 @@ LOG_DIR = ${DORIS_HOME}/log
 JAVA_OPTS="-Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx4096m -XX:+HeapDumpOnOutOfMemoryError -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintClassHistogramAfterFullGC -Xloggc:$DORIS_HOME/log/fe.gc.log.$CUR_DATE -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=50M -Dlog4j2.formatMsgNoLookups=true -Dcom.mysql.cj.disableAbandonedConnectionCleanup=true"
 
 # For jdk 17, this JAVA_OPTS will be used as default JVM options
-JAVA_OPTS_FOR_JDK_17="-Djavax.security.auth.useSubjectCredsOnly=false -Xmx8192m -Xms8192m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$DORIS_HOME/log/ -Xlog:gc*,classhisto*=trace:$DORIS_HOME/log/fe.gc.log.$CUR_DATE:time,uptime:filecount=10,filesize=50M -Dcom.mysql.cj.disableAbandonedConnectionCleanup=true --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens java.base/jdk.internal.ref=ALL-UNNAMED"
+JAVA_OPTS_FOR_JDK_17="-Dfile.encoding=UTF-8 -Djavax.security.auth.useSubjectCredsOnly=false -Xmx8192m -Xms8192m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_DIR -Xlog:gc*,classhisto*=trace:$LOG_DIR/fe.gc.log.$CUR_DATE:time,uptime:filecount=10,filesize=50M -Darrow.enable_null_check_for_get=false --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. [...]
 
 sys_log_level = INFO
 sys_log_mode = NORMAL
diff --git a/regression-test/pipeline/p1/conf/be.conf b/regression-test/pipeline/p1/conf/be.conf
index b57c3abca74..cc776b5cbd7 100644
--- a/regression-test/pipeline/p1/conf/be.conf
+++ b/regression-test/pipeline/p1/conf/be.conf
@@ -23,7 +23,7 @@ PPROF_TMPDIR="$DORIS_HOME/log/"
 JAVA_OPTS="-Xmx1024m -DlogPath=$DORIS_HOME/log/jni.log -Xloggc:$DORIS_HOME/log/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 -Dcom.mysql.cj.disableAbandonedConnectionCleanup=true"
 
 # For jdk 17, this JAVA_OPTS will be used as default JVM options
-JAVA_OPTS_FOR_JDK_17="-Xmx1024m -DlogPath=$DORIS_HOME/log/jni.log -Xlog:gc*:$DORIS_HOME/log/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=AL [...]
+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 -Darrow.enable_null_check_for_get=false --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add [...]
 
 # Set your own JAVA_HOME
 # JAVA_HOME=/path/to/jdk/
diff --git a/regression-test/pipeline/p1/conf/fe.conf b/regression-test/pipeline/p1/conf/fe.conf
index 168fe99c6e0..63e6e1bdf64 100644
--- a/regression-test/pipeline/p1/conf/fe.conf
+++ b/regression-test/pipeline/p1/conf/fe.conf
@@ -30,7 +30,7 @@ LOG_DIR = ${DORIS_HOME}/log
 JAVA_OPTS="-Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx4096m -XX:+HeapDumpOnOutOfMemoryError -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintClassHistogramAfterFullGC -Xloggc:$DORIS_HOME/log/fe.gc.log.$CUR_DATE -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=50M -Dlog4j2.formatMsgNoLookups=true -Dcom.mysql.cj.disableAbandonedConnectionCleanup=true"
 
 # For jdk 17, this JAVA_OPTS will be used as default JVM options
-JAVA_OPTS_FOR_JDK_17="-Djavax.security.auth.useSubjectCredsOnly=false -Xmx8192m -Xms8192m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$DORIS_HOME/log/ -Xlog:gc*,classhisto*=trace:$DORIS_HOME/log/fe.gc.log.$CUR_DATE:time,uptime:filecount=10,filesize=50M -Dcom.mysql.cj.disableAbandonedConnectionCleanup=true"
+JAVA_OPTS_FOR_JDK_17="-Dfile.encoding=UTF-8 -Djavax.security.auth.useSubjectCredsOnly=false -Xmx8192m -Xms8192m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_DIR -Xlog:gc*,classhisto*=trace:$LOG_DIR/fe.gc.log.$CUR_DATE:time,uptime:filecount=10,filesize=50M -Darrow.enable_null_check_for_get=false --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. [...]
 
 sys_log_level = INFO
 sys_log_mode = NORMAL


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org