Dashboard missing JVM/Args due to duplicate -Xss256k in SOLR_OPTS

Issue #11 resolved
Steve Woodcock created an issue

Using version 0.5.8 of this module and Solr 6.6.2 running on CentOS 7.4.

After initial puppet run I can see the JVM/Args section of the dashboard, but after a "systemctl restart solr" it disappears. In the Chrome console I get an error:

Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: arg in commandLineArgs, Duplicate key: string:-Xss256k, Duplicate value: -Xss256k

And indeed the running Solr process has dupe stack size args:

$ ps auxw | grep 256
solr     18866  1.6 45.8 2663400 229468 ?      Sl   11:09   0:08 /usr/lib/jvm/jre-1.8.0/bin/java -server -Xms512m -Xmx512m -XX:NewRatio=3 -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=8 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:ConcGCThreads=4 -XX:ParallelGCThreads=4 -XX:+CMSScavengeBeforeRemark -XX:PretenureSizeThreshold=64m -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=50 -XX:CMSMaxAbortablePrecleanTime=6000 -XX:+CMSParallelRemarkEnabled -XX:+ParallelRefProcEnabled -verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:/var/log/solr/solr_gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=9 -XX:GCLogFileSize=20M -DzkClientTimeout=15000 -DzkHost=zk-dev-01.aws.scholastic.co.uk:2181/solr6 -Dsolr.log.dir=/var/log/solr -Djetty.port=8983 -DSTOP.PORT=7983 -DSTOP.KEY=solrrocks -Dhost=vagrant-testing.example.com -Duser.timezone=UTC -Djetty.home=/opt/solr/server -Dsolr.solr.home=/opt/solr/server/solr -Dsolr.install.dir=/opt/solr -Dlog4j.configuration=file:/var/solr/log4j.properties -Xss256k -Xss256k -Dsolr.log.muteconsole -XX:OnOutOfMemoryError=/opt/solr/bin/oom_solr.sh 8983 /var/log/solr -jar start.jar --module=http

I think this is caused by the vendor supplied bin/solr script setting the stack size as well as the sysconfig/solr config provided by this module.

In bin/solr:

# Pick default for Java thread stack size, and then add to SOLR_OPTS
if [ -z ${SOLR_JAVA_STACK_SIZE+x} ]; then
  SOLR_JAVA_STACK_SIZE='-Xss256k'
fi
SOLR_OPTS+=($SOLR_JAVA_STACK_SIZE)

In /etc/sysconfig/solr:

# Set the thread stack size
SOLR_OPTS="$SOLR_OPTS -Xss256k"

I'm not sure why it only shows up after a restart though.

I guess the simple fix is to remove the duplicate setting from the sysconfig file. I'll submit a PR.

Comments (2)

  1. Michael Speth

    Fix #11, remove dupe stack size from solr.in.sh.erb

    The stack size setting is also in vendor supplied bin/solr script, which leads to duplicated -Xss256k args which breaks the Solr dashboard.

    → <<cset 3bfbd1cd78e1>>

  2. Log in to comment