sysconfig: correct the assignment in env file of systemd

This commit e80a5e3cb3 introduced an issue,
it wrongly passes an empty string to scylla-jmx cmdline, which causes
scylla-jmx script stuck. The cmdline real executes is:

  # scylla-jmx -l /usr/lib/scylla/jmx ""

Wrapped quotation marks of env variable can't be parsed away if we use
${SCYLLA_PARAMS} in ExecStart cmdline, but $SCYLLA_PARAMS works.

Another problem is the variable can't be re-used insider env file,
reference: [1]. Let's split the parameters to multiple env variables,
and combine them in ExecStart cmdline.

[1] https://unix.stackexchange.com/questions/358998/systemd-environmentfile-re-using-variables-how

Fixes scylladb/scylla#2935

Signed-off-by: Amos Kong <amos@scylladb.com>
Message-Id: <c983103c08a3f901037fd282a14df5bb7f85dddd.1510494507.git.amos@scylladb.com>
This commit is contained in:
Amos Kong 2017-11-12 13:52:03 +00:00 committed by Avi Kivity
parent e80a5e3cb3
commit 01ba660fe7
2 changed files with 9 additions and 11 deletions

View File

@ -4,28 +4,26 @@ SCYLLA_HOME=/var/lib/scylla
# scylla config dir
SCYLLA_CONF=/etc/scylla
SCYLLA_PARAMS=""
# The jmx port to open
# SCYLLA_PARAMS="${SCYLLA_PARAMS } -jp 7199"
# SCYLLA_JMX_PORT="-jp 7199"
# The API port to connect to
# SCYLLA_PARAMS="${SCYLLA_PARAMS} -p 12345"
#SCYLLA_API_PORT="-p 10000"
# API address to connect to
# SCYLLA_PARAMS="${SCYLLA_PARAMS} -a `hostname`"
#SCYLLA_API_ADDR="-a localhost"
# use alternate jmx address
# SCYLLA_PARAMS="${SCYLLA_PARAMS} -ja `hostname`"
#SCYLLA_JMX_ADDR="-ja localhost"
# A configuration file to use
# SCYLLA_PARAMS="${SCYLLA_PARAMS} -cf /etc/scylla.d/scylla-user.cfg"
#SCYLLA_JMX_FILE="-cf /etc/scylla.d/scylla-user.cfg"
# The location of the jmx proxy jar file
# SCYLLA_PARAMS="${SCYLLA_PARAMS} target /some/scripts"
SCYLLA_JMX_LOCAL="-l /usr/lib/scylla/jmx"
# allow to run remotely
# SCYLLA_PARAMS="${SCYLLA_PARAMS} -r"
#SCYLLA_JMX_REMOTE="-r"
# allow debug
# SCYLLA_PARAMS="${SCYLLA_PARAMS} -d"
#SCYLLA_JMX_DEBUG="-d"

View File

@ -8,7 +8,7 @@ Type=simple
EnvironmentFile=@@SYSCONFDIR@@/scylla-jmx
User=scylla
Group=scylla
ExecStart=/usr/lib/scylla/jmx/scylla-jmx -l /usr/lib/scylla/jmx ${SCYLLA_PARAMS}
ExecStart=/usr/lib/scylla/jmx/scylla-jmx $SCYLLA_JMX_PORT $SCYLLA_API_PORT $SCYLLA_API_ADDR $SCYLLA_JMX_ADDR $SCYLLA_JMX_FILE $SCYLLA_JMX_LOCAL $SCYLLA_JMX_REMOTE $SCYLLA_JMX_DEBUG
KillMode=process
Restart=on-abnormal