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