@@ -68,43 +68,34 @@ source ${BK_CONFDIR}/nettyenv.sh
6868source ${BK_CONFDIR} /bkenv.sh
6969source ${BK_CONFDIR} /bk_cli_env.sh
7070
71- detect_jdk8 () {
72- local is_java_8=$( $JAVA -version 2>&1 | grep version | grep ' "1\.8' )
73- if [ -z " $is_java_8 " ]; then
74- echo " 0"
75- else
76- echo " 1"
77- fi
78- }
71+ for token in $( " $JAVA " -version 2>&1 | grep ' version "' ) ; do
72+ if [[ $token =~ \" ([[:digit:]]+)\. ([[:digit:]]+)(.* )\" ]]; then
73+ if [[ ${BASH_REMATCH[1]} == " 1" ]]; then
74+ JAVA_MAJOR_VERSION=${BASH_REMATCH[2]}
75+ else
76+ JAVA_MAJOR_VERSION=${BASH_REMATCH[1]}
77+ fi
78+ break
79+ elif [[ $token =~ \" ([[:digit:]]+)(.* )\" ]]; then
80+ # Process the java versions without dots, such as `17-internal`.
81+ JAVA_MAJOR_VERSION=${BASH_REMATCH[1]}
82+ break
83+ fi
84+ done
85+
86+ if [[ $JAVA_MAJOR_VERSION -lt 17 ]]; then
87+ echo " Error: BookKeeper requires Java 17 or later." 1>&2
88+ exit 1
89+ fi
7990
8091# default netty settings
8192NETTY_LEAK_DETECTION_LEVEL=${NETTY_LEAK_DETECTION_LEVEL:- " disabled" }
8293
83- USING_JDK8=$( detect_jdk8)
84-
85- if [ " $USING_JDK8 " -ne " 1" ]; then
86- DEFAULT_BOOKIE_GC_OPTS=" -XX:+UseG1GC \
87- -XX:MaxGCPauseMillis=10 \
88- -XX:+ParallelRefProcEnabled \
89- -XX:+DisableExplicitGC"
90- DEFAULT_BOOKIE_GC_LOGGING_OPTS=" "
91- else
92- DEFAULT_BOOKIE_GC_OPTS=" -XX:+UseG1GC \
93- -XX:MaxGCPauseMillis=10 \
94- -XX:+ParallelRefProcEnabled \
95- -XX:+UnlockExperimentalVMOptions \
96- -XX:+DoEscapeAnalysis \
97- -XX:ParallelGCThreads=32 \
98- -XX:ConcGCThreads=32 \
99- -XX:G1NewSizePercent=50 \
100- -XX:+DisableExplicitGC \
101- -XX:-ResizePLAB"
102- DEFAULT_BOOKIE_GC_LOGGING_OPTS=" -XX:+PrintGCDetails \
103- -XX:+PrintGCApplicationStoppedTime \
104- -XX:+UseGCLogFileRotation \
105- -XX:NumberOfGCLogFiles=5 \
106- -XX:GCLogFileSize=64m"
107- fi
94+ DEFAULT_BOOKIE_GC_OPTS=" -XX:+UseG1GC \
95+ -XX:MaxGCPauseMillis=10 \
96+ -XX:+ParallelRefProcEnabled \
97+ -XX:+DisableExplicitGC"
98+ DEFAULT_BOOKIE_GC_LOGGING_OPTS=" "
10899
109100BOOKIE_MAX_HEAP_MEMORY=${BOOKIE_MAX_HEAP_MEMORY:- " 1g" }
110101BOOKIE_MIN_HEAP_MEMORY=${BOOKIE_MIN_HEAP_MEMORY:- " 1g" }
@@ -116,15 +107,7 @@ BOOKIE_GC_LOGGING_OPTS=${BOOKIE_GC_LOGGING_OPTS:-"${DEFAULT_BOOKIE_GC_LOGGING_OP
116107# default CLI JVM settings
117108DEFAULT_CLI_GC_OPTS=" -XX:+UseG1GC \
118109 -XX:MaxGCPauseMillis=10"
119- if [ " $USING_JDK8 " -ne " 1" ]; then
120- DEFAULT_CLI_GC_LOGGING_OPTS=" "
121- else
122- DEFAULT_CLI_GC_LOGGING_OPTS=" -XX:+PrintGCDetails \
123- -XX:+PrintGCApplicationStoppedTime \
124- -XX:+UseGCLogFileRotation \
125- -XX:NumberOfGCLogFiles=5 \
126- -XX:GCLogFileSize=64m"
127- fi
110+ DEFAULT_CLI_GC_LOGGING_OPTS=" "
128111
129112CLI_MAX_HEAP_MEMORY=${CLI_MAX_HEAP_MEMORY:- " 512M" }
130113CLI_MIN_HEAP_MEMORY=${CLI_MIN_HEAP_MEMORY:- " 256M" }
@@ -260,34 +243,24 @@ set_module_classpath() {
260243build_bookie_jvm_opts () {
261244 LOG_DIR=$1
262245 GC_LOG_FILENAME=$2
263- if [ " $USING_JDK8 " -eq " 1" ]; then
264- echo " $BOOKIE_MEM_OPTS $BOOKIE_GC_OPTS $BOOKIE_GC_LOGGING_OPTS $BOOKIE_PERF_OPTS -Xloggc:${LOG_DIR} /${GC_LOG_FILENAME} "
265- else
266- echo " $BOOKIE_MEM_OPTS $BOOKIE_GC_OPTS $BOOKIE_GC_LOGGING_OPTS $BOOKIE_PERF_OPTS -Xlog:gc=info:file=${LOG_DIR} /${GC_LOG_FILENAME} ::filecount=5,filesize=64m"
267- fi
246+ echo " $BOOKIE_MEM_OPTS $BOOKIE_GC_OPTS $BOOKIE_GC_LOGGING_OPTS $BOOKIE_PERF_OPTS -Xlog:gc=info:file=${LOG_DIR} /${GC_LOG_FILENAME} ::filecount=5,filesize=64m"
268247 return
269248}
270249
271250build_cli_jvm_opts () {
272251 LOG_DIR=$1
273252 GC_LOG_FILENAME=$2
274- if [ " $USING_JDK8 " -eq " 1" ]; then
275- echo " $CLI_MEM_OPTS $CLI_GC_OPTS $CLI_GC_LOGGING_OPTS -Xloggc:${LOG_DIR} /${GC_LOG_FILENAME} "
276- else
277- echo " $CLI_MEM_OPTS $CLI_GC_OPTS $CLI_GC_LOGGING_OPTS -Xlog:gc=info:file=${LOG_DIR} /${GC_LOG_FILENAME} ::filecount=5,filesize=64m"
278- fi
253+ echo " $CLI_MEM_OPTS $CLI_GC_OPTS $CLI_GC_LOGGING_OPTS -Xlog:gc=info:file=${LOG_DIR} /${GC_LOG_FILENAME} ::filecount=5,filesize=64m"
279254 return
280255}
281256
282257build_netty_opts () {
283258 NETTY_OPTS=" -Dio.netty.leakDetectionLevel=${NETTY_LEAK_DETECTION_LEVEL} -Dio.netty.tryReflectionSetAccessible=true"
284259 # --add-opens does not exist on jdk8
285- if [ " $USING_JDK8 " -eq " 0" ]; then
286- # Enable java.nio.DirectByteBuffer
287- # https://github.com/netty/netty/blob/4.1/common/src/main/java/io/netty/util/internal/PlatformDependent0.java
288- # https://github.com/netty/netty/issues/12265
289- NETTY_OPTS=" $NETTY_OPTS --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/jdk.internal.misc=ALL-UNNAMED"
290- fi
260+ # Enable java.nio.DirectByteBuffer
261+ # https://github.com/netty/netty/blob/4.1/common/src/main/java/io/netty/util/internal/PlatformDependent0.java
262+ # https://github.com/netty/netty/issues/12265
263+ NETTY_OPTS=" $NETTY_OPTS --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/jdk.internal.misc=ALL-UNNAMED"
291264 echo $NETTY_OPTS
292265}
293266
@@ -322,12 +295,10 @@ build_cli_logging_opts() {
322295build_bookie_opts () {
323296 BOOKIE_OPTS=" -Djava.net.preferIPv4Stack=true"
324297 # --add-opens does not exist on jdk8
325- if [ " $USING_JDK8 " -eq " 0" ]; then
326- # enable posix_fadvise usage in the Journal
327- BOOKIE_OPTS=" $BOOKIE_OPTS --add-opens java.base/java.io=ALL-UNNAMED"
328- # DirectMemoryCRC32Digest
329- BOOKIE_OPTS=" $BOOKIE_OPTS --add-opens java.base/java.util.zip=ALL-UNNAMED"
330- fi
298+ # enable posix_fadvise usage in the Journal
299+ BOOKIE_OPTS=" $BOOKIE_OPTS --add-opens java.base/java.io=ALL-UNNAMED"
300+ # DirectMemoryCRC32Digest
301+ BOOKIE_OPTS=" $BOOKIE_OPTS --add-opens java.base/java.util.zip=ALL-UNNAMED"
331302 echo $BOOKIE_OPTS
332303}
333304
0 commit comments