-
Notifications
You must be signed in to change notification settings - Fork 1k
sbt bash script java memory arguments don't override .sbtopts like they did in 1.10.7 #8685
Description
steps
.sbtopts:
-J-Xmx2g
-J-XX:ReservedCodeCacheSize=1g
-J-XX:MaxMetaspaceSize=2g
-J-Xss512m
-J-XX:+UseG1GC
1.10.7
sbt -d -J-Xms2G --mem 12288 -Dsbt.boot.lock=false test
[addSbt] arg = '-debug'
[addJava] arg = '-Xms2G'
[addMemory] arg = '12288'
[addJava] arg = '-Xms12288m'
[addJava] arg = '-Xmx12288m'
[addJava] arg = '-Xss4M'
[addJava] arg = '-XX:ReservedCodeCacheSize=512m'
[addJava] arg = '-Dsbt.boot.lock=false'
[residual] arg = 'test'
[residual] arg = 'test'
[sbt_options] declare -a sbt_options='()'
[process_args] java_version = '11'
[addJava] arg = '-Dsbt.script=/Users/epeters/.sdkman/candidates/sbt/1.10.7/bin/sbt'
[copyRt] java9_rt = '/Users/epeters/.sbt/1.0/java9-rt-ext-amazon_com_inc__11_0_21/rt.jar'
[addJava] arg = '-Dscala.ext.dirs=/Users/epeters/.sbt/1.0/java9-rt-ext-amazon_com_inc__11_0_21'
# Executing command line:
java
-Dfile.encoding=UTF-8
-XX:+UseG1GC
-Xms12288m
-Xmx12288m
-Xss4M
-XX:ReservedCodeCacheSize=512m
-Dsbt.boot.lock=false
-Dsbt.script=/Users/epeters/.sdkman/candidates/sbt/1.10.7/bin/sbt
-Dscala.ext.dirs=/Users/epeters/.sbt/1.0/java9-rt-ext-amazon_com_inc__11_0_21
-jar
/Users/epeters/.sdkman/candidates/sbt/1.10.7/bin/sbt-launch.jar
-debug
test1.12.1
$ sbt -d -mem 12288 -Dsbt.boot.lock=false test
[addSbt] arg = '-debug'
[addMemory] arg = '12288'
[addJava] arg = '-Xms12288m'
[addJava] arg = '-Xmx12288m'
[addJava] arg = '-Xss4M'
[addJava] arg = '-XX:ReservedCodeCacheSize=512m'
[addJava] arg = '-Dsbt.boot.lock=false'
[residual] arg = 'test'
[addJava] arg = '-Xmx2g'
[addJava] arg = '-XX:ReservedCodeCacheSize=1g'
[addJava] arg = '-XX:MaxMetaspaceSize=2g'
[addJava] arg = '-Xss512m'
[addJava] arg = '-XX:+UseG1GC'
[residual] arg = 'test'
[sbt_options] declare -a sbt_options='()'
[process_args] java_version = '11'
[addJava] arg = '-Dsbt.script=/Users/epeters/.sdkman/candidates/sbt/current/bin/sbt'
[copyRt] java9_rt = '/rt.jar'
mkdir: : No such file or directory
Error occurred during initialization of VM
Initial heap size set to a larger value than the maximum heap size
[addJava] arg = '-Dscala.ext.dirs='
# Executing command line:
java
-Dfile.encoding=UTF-8
-Xms12288m
-Xmx12288m
-Xss4M
-XX:ReservedCodeCacheSize=512m
-Dsbt.boot.lock=false
-Xmx2g
-XX:ReservedCodeCacheSize=1g
-XX:MaxMetaspaceSize=2g
-Xss512m
-XX:+UseG1GC
-Dsbt.script=/Users/epeters/.sdkman/candidates/sbt/current/bin/sbt
-Dscala.ext.dirs=
-jar
/Users/epeters/.sdkman/candidates/sbt/1.12.1/bin/sbt-launch.jar
-debug
test
Error occurred during initialization of VM
Initial heap size set to a larger value than the maximum heap sizeNotice how the -Xmx2g is now propagated from the .sbtopts despite having the command line override.
problem
[copyRt] java9_rt = '/rt.jar'
mkdir: : No such file or directory
Error occurred during initialization of VM
Initial heap size set to a larger value than the maximum heap size
The java9_rt copy appears to be mildly broken, .sbtopts appears to always be included now.
expectation
We should be able to merge command line arguments at a higher priority than the other environment or file defaults.
I also would expect a valid [addJava] arg = '-Dscala.ext.dirs=/Users/epeters/.sbt/1.0/java9-rt-ext-amazon_com_inc__11_0_21' for the old work around.
notes
I created a diff between 1.10.7 and 1.12.1 here: https://gist.github.com/er1c/9f51326f7745ff802011d91ff268e618/revisions
I'll also take a stab at trying to figure out what the bug is.
In the new launcher script I do see the Edit: I'm blind. Tough to say what the expectation should be..sbtopts bringing in the [addJava] arg = '-XX:+UseG1GC' which was getting ignored in the older version.