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

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

commit fa499cc200344eaaf837fd52211820dc7b7b9296
Author: Tiewei Fang <43782773+bepppo...@users.noreply.github.com>
AuthorDate: Mon Mar 4 19:45:38 2024 +0800

    [Enhencement](env) Checking Master branch must use JDK17 (#31587)
    
    Add to check the JDK version in `env.sh`,  and force master to use java 17 
version
---
 bin/start_be.sh | 13 ++-------
 bin/start_fe.sh | 12 +++-----
 conf/fe.conf    |  2 +-
 env.sh          | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 4 files changed, 85 insertions(+), 28 deletions(-)

diff --git a/bin/start_be.sh b/bin/start_be.sh
index 34b2dbeaf87..0f6def08fbd 100755
--- a/bin/start_be.sh
+++ b/bin/start_be.sh
@@ -298,21 +298,14 @@ CUR_DATE=$(date +%Y%m%d-%H%M%S)
 LOG_PATH="-DlogPath=${DORIS_HOME}/log/jni.log"
 COMMON_OPTS="-Dsun.java.command=DorisBE -XX:-CriticalJNINatives"
 
-if [[ "${java_version}" -gt 16 ]]; then
+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"
     fi
     final_java_opt="${JAVA_OPTS_FOR_JDK_17}"
-elif [[ "${java_version}" -gt 8 ]]; then
-    if [[ -z ${JAVA_OPTS_FOR_JDK_9} ]]; then
-        JAVA_OPTS_FOR_JDK_9="-Xmx1024m ${LOG_PATH} 
-Xlog:gc:${DORIS_HOME}/log/be.gc.log.${CUR_DATE} ${COMMON_OPTS}"
-    fi
-    final_java_opt="${JAVA_OPTS_FOR_JDK_9}"
 else
-    if [[ -z ${JAVA_OPTS} ]]; then
-        JAVA_OPTS="-Xmx1024m ${LOG_PATH} 
-Xloggc:${DORIS_HOME}/log/be.gc.log.${CUR_DATE} ${COMMON_OPTS}"
-    fi
-    final_java_opt="${JAVA_OPTS}"
+    echo "ERROR: The jdk_version is ${java_version}, it must be 17." 
>>"${LOG_DIR}/be.out"
+    exit 1
 fi
 
 if [[ "${MACHINE_OS}" == "Darwin" ]]; then
diff --git a/bin/start_fe.sh b/bin/start_fe.sh
index dc8d7857841..83496bf7bd7 100755
--- a/bin/start_fe.sh
+++ b/bin/start_fe.sh
@@ -180,19 +180,15 @@ java_version="$(
     set -e
     jdk_version "${JAVA}"
 )"
-final_java_opt="${JAVA_OPTS}"
-if [[ "${java_version}" -gt 16 ]]; then
+if [[ "${java_version}" -eq 17 ]]; then
     if [[ -z "${JAVA_OPTS_FOR_JDK_17}" ]]; then
         echo "JAVA_OPTS_FOR_JDK_17 is not set in fe.conf" >>"${LOG_DIR}/fe.out"
         exit 1
     fi
     final_java_opt="${JAVA_OPTS_FOR_JDK_17}"
-elif [[ "${java_version}" -gt 8 ]]; then
-    if [[ -z "${JAVA_OPTS_FOR_JDK_9}" ]]; then
-        echo "JAVA_OPTS_FOR_JDK_9 is not set in fe.conf" >>"${LOG_DIR}/fe.out"
-        exit 1
-    fi
-    final_java_opt="${JAVA_OPTS_FOR_JDK_9}"
+else
+    echo "ERROR: The jdk_version is ${java_version}, it must be 17." 
>>"${LOG_DIR}/fe.out"
+    exit 1
 fi
 echo "using java version ${java_version}" >>"${LOG_DIR}/fe.out"
 echo "${final_java_opt}" >>"${LOG_DIR}/fe.out"
diff --git a/conf/fe.conf b/conf/fe.conf
index 66794ddf3fa..756e83b5457 100644
--- a/conf/fe.conf
+++ b/conf/fe.conf
@@ -39,7 +39,7 @@ JAVA_OPTS="-Djavax.security.auth.useSubjectCredsOnly=false 
-Xss4m -Xmx8192m -XX:
 JAVA_OPTS_FOR_JDK_9="-Djavax.security.auth.useSubjectCredsOnly=false -Xss4m 
-Xmx8192m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 
-Xlog:gc*:$DORIS_HOME/log/fe.gc.log.$CUR_DATE:time 
-Dlog4j2.formatMsgNoLookups=true"
 
 # For jdk 17+, this JAVA_OPTS will be used as default JVM options
-JAVA_OPTS_FOR_JDK_17="-Djavax.security.auth.useSubjectCredsOnly=false 
-XX:+UseZGC -Xmx8192m -Xms8192m -XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=$DORIS_HOME/log/ 
-Xlog:gc*:$DORIS_HOME/log/fe.gc.log.$CUR_DATE:time"
+JAVA_OPTS_FOR_JDK_17="-Djavax.security.auth.useSubjectCredsOnly=false 
-Xmx8192m -Xms8192m -XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=$DORIS_HOME/log/ 
-Xlog:gc*:$DORIS_HOME/log/fe.gc.log.$CUR_DATE:time"
 
 ##
 ## the lowercase properties are read by main program.
diff --git a/env.sh b/env.sh
index 835d8cafc92..5f2cef57e69 100755
--- a/env.sh
+++ b/env.sh
@@ -199,6 +199,53 @@ CLANG_COMPATIBLE_FLAGS="$(echo | 
"${DORIS_GCC_HOME}/bin/gcc" -Wp,-v -xc++ - -fsy
     grep -E '^\s+/' | awk '{print "-I" $1}' | tr '\n' ' ')"
 export CLANG_COMPATIBLE_FLAGS
 
+# get jdk version, return version as an Integer.
+# 1.8 => 8, 13.0 => 13
+function jdk_version() {
+    local java_cmd="${1}"
+    local result
+    local IFS=$'\n'
+
+    if [[ -z "${java_cmd}" ]]; then
+        result=no_java
+        return 1
+    else
+        local version
+        # remove \r for Cygwin
+        version="$("${java_cmd}" -Xms32M -Xmx32M -version 2>&1 | tr '\r' '\n' 
| grep version | awk '{print $3}')"
+        version="${version//\"/}"
+        if [[ "${version}" =~ ^1\. ]]; then
+            result="$(echo "${version}" | awk -F '.' '{print $2}')"
+        else
+            result="$(echo "${version}" | awk -F '.' '{print $1}')"
+        fi
+    fi
+    echo "${result}"
+    return 0
+}
+
+# check java version
+# must use jdk_17
+function check_jdk_version() {
+    if [[ ! -x "${JAVA}" ]]; then
+        echo "The JAVA_HOME environment variable is not defined correctly"
+        echo "This environment variable is needed to run this program"
+        echo "NB: JAVA_HOME should point to a JDK not a JRE"
+        exit 1
+    fi
+
+    echo "Check JAVA version"
+    java_version="$(
+        set -e
+        jdk_version "${JAVA}"
+    )"
+    if [[ "${java_version}" -ne 17 ]]; then
+        echo "ERROR: The JAVA version is ${java_version}, it must be JDK-17."
+        exit 1
+    fi
+    return 0
+}
+
 # if is called from build-thirdparty.sh, no need to check these tools
 if test -z "${BUILD_THIRDPARTY_WIP:-}"; then
     # register keyword is forbidden to use in C++17
@@ -213,20 +260,41 @@ if test -z "${BUILD_THIRDPARTY_WIP:-}"; then
 
     # check java home
     if [[ -z "${JAVA_HOME}" ]]; then
-        JAVA="$(command -v java)"
-        JAVAP="$(command -v javap)"
+        if [[ -n "${JDK_17}" ]]; then
+            echo "Use JDK_17 = ${JDK_17}"
+            JAVA="${JDK_17}/bin/java"
+            JAVAP="${JDK_17}/bin/javap"
+            export JAVA_HOME="${JDK_17}"
+        else
+            JAVA="$(command -v java)"
+            JAVAP="$(command -v javap)"
+        fi
+        check_jdk_version
     else
         JAVA="${JAVA_HOME}/bin/java"
         JAVAP="${JAVA_HOME}/bin/javap"
-    fi
-    export JAVA
 
-    if [[ ! -x "${JAVA}" ]]; then
-        echo "The JAVA_HOME environment variable is not defined correctly"
-        echo "This environment variable is needed to run this program"
-        echo "NB: JAVA_HOME should point to a JDK not a JRE"
-        exit 1
+        echo "Check JAVA_HOME version"
+        java_version="$(
+            set -e
+            jdk_version "${JAVA}"
+        )"
+        if [[ "${java_version}" -ne 17 ]]; then
+            echo "JAVA_HOME=${JAVA_HOME}. It does not point to JDK-17."
+            if [[ -n "${JDK_17}" ]]; then
+                echo "Use JDK_17=${JDK_17}."
+                JAVA="${JDK_17}/bin/java"
+                JAVAP="${JDK_17}/bin/javap"
+                export JAVA_HOME="${JDK_17}"
+                check_jdk_version
+            else
+                echo "The 'JDK_17' environment variable is not set."
+                echo "ERROR: The JAVA version is ${java_version}, it must be 
JDK-17."
+                exit 1
+            fi
+        fi
     fi
+    export JAVA
 
     JAVA_VER="$("${JAVAP}" -verbose java.lang.String | grep "major version" | 
cut -d " " -f5)"
     if [[ "${JAVA_VER}" -lt 52 ]]; then


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

Reply via email to