From 8d8a918bcf5c746fed73916b12e671c86885ba46 Mon Sep 17 00:00:00 2001 From: William Brafford Date: Wed, 9 Sep 2020 09:51:12 -0400 Subject: [PATCH] Avoid extra whitespace in parsed JVM options (#57769) (#62138) The windows service script does a little munging of the parsed JVM option string, converting whitespaces to semicolons. We recently added an optional Java 14 JDK flag to our system JVM flags. On earlier JDKs, the windows service batch script would encounter a double whitespace when this option was missing and convert it into double semicolons. Double semicolons, in turn, don't work in the arguments to the windows service command, and led to a lot of JVM options being dropped, including "es.path.conf", which is required for startup. This commit puts in a double defense. First, it removes any empty-string options from the system options list in the Java Options Parser code. Second, it munges out double semicolons if they do appear in the parsed option output. Co-authored-by: Elastic Machine --- .../src/bin/elasticsearch-service.bat | Bin 8463 -> 8530 bytes .../tools/launchers/SystemJvmOptions.java | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/distribution/src/bin/elasticsearch-service.bat b/distribution/src/bin/elasticsearch-service.bat index a501f9ba3900f5ca3150b2c3a7c4653896219711..90105047d7c3438bced58198d182f8f6ed7d672e 100644 GIT binary patch delta 19 acmeBoy5zJWop-V-uPu|c_2y*WHNpT!&jw}y delta 12 TcmccQ)bF$*op diff --git a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/SystemJvmOptions.java b/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/SystemJvmOptions.java index dd84a30c9e3..eb4ab4c4cc0 100644 --- a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/SystemJvmOptions.java +++ b/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/SystemJvmOptions.java @@ -24,6 +24,7 @@ import org.elasticsearch.tools.java_version_checker.JavaVersion; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; final class SystemJvmOptions { @@ -68,7 +69,7 @@ final class SystemJvmOptions { javaLocaleProviders() ) - ); + ).stream().filter(e -> e.isEmpty() == false).collect(Collectors.toList()); } private static String maybeShowCodeDetailsInExceptionMessages() {