From 9fadcc1895b83e1eceb6f06f28a1a24755ea01d4 Mon Sep 17 00:00:00 2001 From: William Brafford Date: Wed, 13 Nov 2019 16:15:34 -0500 Subject: [PATCH] Remove parsed JVM settings from general settings The Apache Commons Daemon has some helpful features for Java applications, like nice little next boxes for min heap, max heap, and thread stack size. Our elasticsearch-service.bat script parses those values out of the ES_JAVA_OPTS environment variable and provides them to the Apache Commons Daemon invocation command in order to provide sensible defaults. However, we failed to remove those values from the ES_JAVA_OPTS environment variable, which meant they ended up in the "Java Options" text box and would, from there, override whatever the user put in the specific boxes for heap size or thread stack size. This commit modifies the loop that parses ES_JAVA_OPTS to construct a new enviroment variable containing only the values that aren't parsed out for heap size or thread stack size, then uses that new enviroment variable in the commons daemon invocation command. --- distribution/src/bin/elasticsearch-service.bat | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/distribution/src/bin/elasticsearch-service.bat b/distribution/src/bin/elasticsearch-service.bat index 3b1478110692e..dd936138016ca 100644 --- a/distribution/src/bin/elasticsearch-service.bat +++ b/distribution/src/bin/elasticsearch-service.bat @@ -131,32 +131,40 @@ echo %ES_JAVA_OPTS% @setlocal EnableDelayedExpansion for %%a in ("%ES_JAVA_OPTS:;=","%") do ( set var=%%a + set other_opt=true if "!var:~1,4!" == "-Xms" ( set XMS=!var:~5,-1! + set other_opt=false call:convertxm !XMS! JVM_MS ) if "!var:~1,16!" == "-XX:MinHeapSize=" ( set XMS=!var:~17,-1! + set other_opt=false call:convertxm !XMS! JVM_MS ) if "!var:~1,4!" == "-Xmx" ( set XMX=!var:~5,-1! + set other_opt=false call:convertxm !XMX! JVM_MX ) if "!var:~1,16!" == "-XX:MaxHeapSize=" ( set XMX=!var:~17,-1! + set other_opt=false call:convertxm !XMX! JVM_MX ) if "!var:~1,4!" == "-Xss" ( set XSS=!var:~5,-1! + set other_opt=false call:convertxk !XSS! JVM_SS ) if "!var:~1,20!" == "-XX:ThreadStackSize=" ( set XSS=!var:~21,-1! + set other_opt=false call:convertxk !XSS! JVM_SS ) + if "!other_opt!" == "true" set OTHER_JAVA_OPTS=!OTHER_JAVA_OPTS!;!var! ) -@endlocal & set JVM_MS=%JVM_MS% & set JVM_MX=%JVM_MX% & set JVM_SS=%JVM_SS% +@endlocal & set JVM_MS=%JVM_MS% & set JVM_MX=%JVM_MX% & set JVM_SS=%JVM_SS% & set OTHER_JAVA_OPTS=%OTHER_JAVA_OPTS% if "%JVM_MS%" == "" ( echo minimum heap size not set; configure using -Xms via "%ES_JVM_OPTIONS%" or ES_JAVA_OPTS @@ -170,6 +178,8 @@ if "%JVM_SS%" == "" ( echo thread stack size not set; configure using -Xss via "%ES_JVM_OPTIONS%" or ES_JAVA_OPTS goto:eof ) +set OTHER_JAVA_OPTS=%OTHER_JAVA_OPTS:"=% +set OTHER_JAVA_OPTS=%OTHER_JAVA_OPTS:~1% set ES_PARAMS=-Delasticsearch;-Des.path.home="%ES_HOME%";-Des.path.conf="%ES_PATH_CONF%";-Des.distribution.flavor="%ES_DISTRIBUTION_FLAVOR%";-Des.distribution.type="%ES_DISTRIBUTION_TYPE%";-Des.bundled_jdk="%ES_BUNDLED_JDK%" @@ -184,7 +194,7 @@ if not "%SERVICE_USERNAME%" == "" ( set SERVICE_PARAMS=%SERVICE_PARAMS% --ServiceUser "%SERVICE_USERNAME%" --ServicePassword "%SERVICE_PASSWORD%" ) ) -"%EXECUTABLE%" //IS//%SERVICE_ID% --Startup %ES_START_TYPE% --StopTimeout %ES_STOP_TIMEOUT% --StartClass org.elasticsearch.bootstrap.Elasticsearch --StartMethod main ++StartParams --quiet --StopClass org.elasticsearch.bootstrap.Elasticsearch --StopMethod close --Classpath "%ES_CLASSPATH%" --JvmMs %JVM_MS% --JvmMx %JVM_MX% --JvmSs %JVM_SS% --JvmOptions %ES_JAVA_OPTS% ++JvmOptions %ES_PARAMS% %LOG_OPTS% --PidFile "%SERVICE_ID%.pid" --DisplayName "%SERVICE_DISPLAY_NAME%" --Description "%SERVICE_DESCRIPTION%" --Jvm "%JAVA_HOME%%JVM_DLL%" --StartMode jvm --StopMode jvm --StartPath "%ES_HOME%" %SERVICE_PARAMS% ++Environment HOSTNAME="%%COMPUTERNAME%%" +"%EXECUTABLE%" //IS//%SERVICE_ID% --Startup %ES_START_TYPE% --StopTimeout %ES_STOP_TIMEOUT% --StartClass org.elasticsearch.bootstrap.Elasticsearch --StartMethod main ++StartParams --quiet --StopClass org.elasticsearch.bootstrap.Elasticsearch --StopMethod close --Classpath "%ES_CLASSPATH%" --JvmMs %JVM_MS% --JvmMx %JVM_MX% --JvmSs %JVM_SS% --JvmOptions %OTHER_JAVA_OPTS% ++JvmOptions %ES_PARAMS% %LOG_OPTS% --PidFile "%SERVICE_ID%.pid" --DisplayName "%SERVICE_DISPLAY_NAME%" --Description "%SERVICE_DESCRIPTION%" --Jvm "%JAVA_HOME%%JVM_DLL%" --StartMode jvm --StopMode jvm --StartPath "%ES_HOME%" %SERVICE_PARAMS% ++Environment HOSTNAME="%%COMPUTERNAME%%" if not errorlevel 1 goto installed echo Failed installing '%SERVICE_ID%' service