From 3633dcd5bb2f3ba219f22272a36a9ab67b23a38a Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Wed, 19 Aug 2026 19:05:55 +0200 Subject: [PATCH] Improve Java version parsing logic to gloss over warning messages I am trying to start Solr in a Docker container in a virtual `arm64` Linux machine on Apple Silicon hardware. To my knowledge, this configuration does (currently?) not support SVE vector length detection. When `bin/solr` runs `java -version`, this makes the JVM emit a notice: ``` Starting Solr Your current version of Java is too old to run this version of Solr. We found major version , using command '/opt/java/openjdk/bin/java -version', with response: OpenJDK 64-Bit Server VM warning: Unable to get SVE vector length on this system. Disabling SVE. Specify -XX:UseSVE=0 to shun this warning. openjdk version "25.0.3" 2026-04-21 LTS OpenJDK Runtime Environment Temurin-25.0.3+9 (build 25.0.3+9-LTS) OpenJDK 64-Bit Server VM Temurin-25.0.3+9 (build 25.0.3+9-LTS, mixed mode, sharing) Please install latest version of Java 21 or set JAVA_HOME properly. ``` Version detection trips over this extra warning line. So, improve version parsing logic to go over warning lines and lock to the first `version` line. --- .../unreleased/PR#4765-improve-java-version-parsing.yml | 9 +++++++++ solr/bin/solr | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 changelog/unreleased/PR#4765-improve-java-version-parsing.yml diff --git a/changelog/unreleased/PR#4765-improve-java-version-parsing.yml b/changelog/unreleased/PR#4765-improve-java-version-parsing.yml new file mode 100644 index 000000000000..0c612178b8d7 --- /dev/null +++ b/changelog/unreleased/PR#4765-improve-java-version-parsing.yml @@ -0,0 +1,9 @@ +# See https://github.com/apache/solr/blob/main/dev-docs/changelog.adoc +title: Tolerate JVM warning lines when detecting Java version +type: fixed # added, changed, fixed, deprecated, removed, dependency_update, security, other +authors: + - name: Matthias Pigulla + nick: mpdude +links: + - name: PR#4765 + url: https://github.com/apache/solr/pull/4765 diff --git a/solr/bin/solr b/solr/bin/solr index e61808d080c4..509ca6c650ea 100755 --- a/solr/bin/solr +++ b/solr/bin/solr @@ -175,7 +175,7 @@ if [[ $? -ne 0 ]] ; then echo >&2 "${PATH}" exit 1 else - JAVA_VER_NUM=$(echo "$JAVA_VER" | grep -v '_OPTIONS' | head -1 | awk -F '"' '/version/ {print $2}' | sed -e's/^1\.//' | sed -e's/[._-].*$//') + JAVA_VER_NUM=$(echo "$JAVA_VER" | grep -v '_OPTIONS' | awk -F '"' '/ version "/ {print $2; exit}' | sed -e's/^1\.//' | sed -e's/[._-].*$//') if (( JAVA_VER_NUM < JAVA_VER_REQ )) ; then echo >&2 "Your current version of Java is too old to run this version of Solr." echo >&2 "We found major version $JAVA_VER_NUM, using command '${JAVA} -version', with response:"