cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Severin Leonhardt (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CASSANDRA-10920) Let systemd know if Cassandra is running
Date Wed, 23 Dec 2015 10:42:46 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-10920?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Severin Leonhardt updated CASSANDRA-10920:
------------------------------------------
    Description: 
Checking the status of the Cassandra service on CentOS 7 shows this:
{noformat}
$ systemctl status cassandra
● cassandra.service - SYSV: Starts and stops Cassandra
   Loaded: loaded (/etc/rc.d/init.d/cassandra)
   Active: active (exited) since Fri 2015-12-18 13:30:02 CET; 3 days ago
     Docs: man:systemd-sysv-generator(8)
...
{noformat}

The same is shown after the Cassandra process is killed or dies by itself. Notice this part:
_Active: active (exited)_

Starting Cassandra through {{systemctl start cassandra}} will not work, because systemd still
thinks the service is running.

According to the [systemd documentation regarding compatibility with SysV|http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities/]
this is expected behavior. Systemd doesn't know the PID of the Cassandra process and thus
can't check if the service is running or not.

It is suggested to add the following to the SysV script header comment:

{noformat}
# pidfile: /var/run/cassandra/cassandra.pid
{noformat}

After adding this manually systemd correctly detected the state of the Cassandra process on
our machines.

*Update: /var/run/cassandra is missing after reboot*

Since CentOS 7 /var/run is a symlink to /run which is tmpfs-mounted. This makes /var/run/cassandra
go away after a reboot and the PID file is never created again. (With the above change systemd
even fails because it can't find the PID file.)

I suggest adding this to make sure the directory for the PID file exists:

{noformat}
start)
    # Cassandra startup
    echo -n "Starting Cassandra: "
+   pid_dir=`dirname $pid_file`
+   [ -d $pid_dir ] || install -m 755 -o $CASSANDRA_OWNR -d $pid_dir
    su $CASSANDRA_OWNR -c "$CASSANDRA_PROG -p $pid_file" > $log_file 2>&1
{noformat}

  was:
Checking the status of the Cassandra service on CentOS 7 shows this:
{noformat}
$ systemctl status cassandra
● cassandra.service - SYSV: Starts and stops Cassandra
   Loaded: loaded (/etc/rc.d/init.d/cassandra)
   Active: active (exited) since Fri 2015-12-18 13:30:02 CET; 3 days ago
     Docs: man:systemd-sysv-generator(8)
...
{noformat}

The same is shown after the Cassandra process is killed or dies by itself. Notice this part:
_Active: active (exited)_

Starting Cassandra through {{systemctl start cassandra}} will not work, because systemd still
thinks the service is running.

According to the [systemd documentation regarding compatibility with SysV|http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities/]
this is expected behavior. Systemd doesn't know the PID of the Cassandra process and thus
can't check if the service is running or not.

It is suggested to add the following to the SysV script header comment:

{noformat}
# pidfile: /var/run/cassandra/cassandra.pid
{noformat}

After adding this manually systemd correctly detected the state of the Cassandra process on
our machines.



> Let systemd know if Cassandra is running
> ----------------------------------------
>
>                 Key: CASSANDRA-10920
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10920
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Severin Leonhardt
>            Priority: Minor
>
> Checking the status of the Cassandra service on CentOS 7 shows this:
> {noformat}
> $ systemctl status cassandra
> ● cassandra.service - SYSV: Starts and stops Cassandra
>    Loaded: loaded (/etc/rc.d/init.d/cassandra)
>    Active: active (exited) since Fri 2015-12-18 13:30:02 CET; 3 days ago
>      Docs: man:systemd-sysv-generator(8)
> ...
> {noformat}
> The same is shown after the Cassandra process is killed or dies by itself. Notice this
part: _Active: active (exited)_
> Starting Cassandra through {{systemctl start cassandra}} will not work, because systemd
still thinks the service is running.
> According to the [systemd documentation regarding compatibility with SysV|http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities/]
this is expected behavior. Systemd doesn't know the PID of the Cassandra process and thus
can't check if the service is running or not.
> It is suggested to add the following to the SysV script header comment:
> {noformat}
> # pidfile: /var/run/cassandra/cassandra.pid
> {noformat}
> After adding this manually systemd correctly detected the state of the Cassandra process
on our machines.
> *Update: /var/run/cassandra is missing after reboot*
> Since CentOS 7 /var/run is a symlink to /run which is tmpfs-mounted. This makes /var/run/cassandra
go away after a reboot and the PID file is never created again. (With the above change systemd
even fails because it can't find the PID file.)
> I suggest adding this to make sure the directory for the PID file exists:
> {noformat}
> start)
>     # Cassandra startup
>     echo -n "Starting Cassandra: "
> +   pid_dir=`dirname $pid_file`
> +   [ -d $pid_dir ] || install -m 755 -o $CASSANDRA_OWNR -d $pid_dir
>     su $CASSANDRA_OWNR -c "$CASSANDRA_PROG -p $pid_file" > $log_file 2>&1
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message