cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hannu Kröger <hkro...@gmail.com>
Subject Re: Strange issue wherein cassandra not being started from cron
Date Wed, 11 Jan 2017 15:01:21 GMT
One possible reason is that cassandra process gets different user when run differently. Check
who owns the data files and check also what gets written into the /var/log/cassandra/system.log
(or whatever that was).

Hannu

> On 11 Jan 2017, at 16.42, Ajay Garg <ajaygargnsit@gmail.com> wrote:
> 
> Tried everything.
> Every other cron job/script I try works, just the cassandra-service does not.
> 
> On Wed, Jan 11, 2017 at 8:51 AM, Edward Capriolo <edlinuxguru@gmail.com <mailto:edlinuxguru@gmail.com>>
wrote:
> 
> 
> On Tuesday, January 10, 2017, Jonathan Haddad <jon@jonhaddad.com <mailto:jon@jonhaddad.com>>
wrote:
> Last I checked, cron doesn't load the same, full environment you see when you log in.
Also, why put Cassandra on a cron?
> On Mon, Jan 9, 2017 at 9:47 PM Bhuvan Rawal <bhu1rawal@gmail.com <>> wrote:
> Hi Ajay,
> 
> Have you had a look at cron logs? - mine is in path /var/log/cron
> 
> Thanks & Regards,
> 
> On Tue, Jan 10, 2017 at 9:45 AM, Ajay Garg <ajaygargnsit@gmail.com <>> wrote:
> Hi All.
> 
> Facing a very weird issue, wherein the command
> 
> /etc/init.d/cassandra start
> 
> causes cassandra to start when the command is run from command-line.
> 
> 
> However, if I put the above as a cron job
> 
> * * * * * /etc/init.d/cassandra start
> 
> cassandra never starts.
> 
> 
> I have checked, and "cron" service is running.
> 
> 
> Any ideas what might be wrong?
> I am pasting the cassandra script for brevity.
> 
> 
> Thanks and Regards,
> Ajay
> 
> 
> ####################################################################################################
> #! /bin/sh
> ### BEGIN INIT INFO
> # Provides:          cassandra
> # Required-Start:    $remote_fs $network $named $time
> # Required-Stop:     $remote_fs $network $named $time
> # Should-Start:      ntp mdadm
> # Should-Stop:       ntp mdadm
> # Default-Start:     2 3 4 5
> # Default-Stop:      0 1 6
> # Short-Description: distributed storage system for structured data
> # Description:       Cassandra is a distributed (peer-to-peer) system for
> #                    the management and storage of structured data.
> ### END INIT INFO
> 
> # Author: Eric Evans <eevans@racklabs.com <>>
> 
> DESC="Cassandra"
> NAME=cassandra
> PIDFILE=/var/run/$NAME/$NAME.pid
> SCRIPTNAME=/etc/init.d/$NAME
> CONFDIR=/etc/cassandra
> WAIT_FOR_START=10
> CASSANDRA_HOME=/usr/share/cassandra
> FD_LIMIT=100000
> 
> [ -e /usr/share/cassandra/apache-cassandra.jar ] || exit 0
> [ -e /etc/cassandra/cassandra.yaml ] || exit 0
> [ -e /etc/cassandra/cassandra-env.sh ] || exit 0
> 
> # Read configuration variable file if it is present
> [ -r /etc/default/$NAME ] && . /etc/default/$NAME
> 
> # Read Cassandra environment file.
> . /etc/cassandra/cassandra-env.sh
> 
> if [ -z "$JVM_OPTS" ]; then
>     echo "Initialization failed; \$JVM_OPTS not set!" >&2
>     exit 3
> fi
> 
> export JVM_OPTS
> 
> # Export JAVA_HOME, if set.
> [ -n "$JAVA_HOME" ] && export JAVA_HOME
> 
> # Load the VERBOSE setting and other rcS variables
> . /lib/init/vars.sh
> 
> # Define LSB log_* functions.
> # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
> . /lib/lsb/init-functions
> 
> #
> # Function that returns 0 if process is running, or nonzero if not.
> #
> # The nonzero value is 3 if the process is simply not running, and 1 if the
> # process is not running but the pidfile exists (to match the exit codes for
> # the "status" command; see LSB core spec 3.1, section 20.2)
> #
> CMD_PATT="cassandra.+CassandraDaemon"
> is_running()
> {
>     if [ -f $PIDFILE ]; then
>         pid=`cat $PIDFILE`
>         grep -Eq "$CMD_PATT" "/proc/$pid/cmdline" 2>/dev/null && return 0
>         return 1
>     fi
>     return 3
> }
> #
> # Function that starts the daemon/service
> #
> do_start()
> {
>     # Return
>     #   0 if daemon has been started
>     #   1 if daemon was already running
>     #   2 if daemon could not be started
> 
>     ulimit -l unlimited
>     ulimit -n "$FD_LIMIT"
> 
>     cassandra_home=`getent passwd cassandra | awk -F ':' '{ print $6; }'`
>     heap_dump_f="$cassandra_home/java_`date +%s`.hprof"
>     error_log_f="$cassandra_home/hs_err_`date +%s`.log"
> 
>     [ -e `dirname "$PIDFILE"` ] || \
>         install -d -ocassandra -gcassandra -m755 `dirname $PIDFILE`
> 
> 
> 
>     start-stop-daemon -S -c cassandra -a /usr/sbin/cassandra -q -p "$PIDFILE" -t >/dev/null
|| return 1
> 
>     start-stop-daemon -S -c cassandra -a /usr/sbin/cassandra -b -p "$PIDFILE" -- \
>         -p "$PIDFILE" -H "$heap_dump_f" -E "$error_log_f" >/dev/null || return 2
> 
> }
> 
> #
> # Function that stops the daemon/service
> #
> do_stop()
> {
>     # Return
>     #   0 if daemon has been stopped
>     #   1 if daemon was already stopped
>     #   2 if daemon could not be stopped
>     #   other if a failure occurred
>     start-stop-daemon -K -p "$PIDFILE" -R TERM/30/KILL/5 >/dev/null
>     RET=$?
>     rm -f "$PIDFILE"
>     return $RET
> }
> 
> case "$1" in
>   start)
>         [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
>         do_start
>         case "$?" in
>                 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
>                 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
>         esac
>         ;;
>   stop)
>         [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
>         do_stop
>         case "$?" in
>                 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
>                 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
>         esac
>         ;;
>   restart|force-reload)
>         log_daemon_msg "Restarting $DESC" "$NAME"
>         do_stop
>         case "$?" in
>           0|1)
>                 do_start
>                 case "$?" in
>           0|1)
>                 do_start
>                 case "$?" in
>                         0) log_end_msg 0 ;;
>                         1) log_end_msg 1 ;; # Old process is still running
>                         *) log_end_msg 1 ;; # Failed to start
>                 esac
>                 ;;
>           *)
>                 # Failed to stop
>                 log_end_msg 1
>                 ;;
>         esac
>         ;;
>   status)
>     is_running
>     stat=$?
>     case "$stat" in
>       0) log_success_msg "$DESC is running" ;;
>       1) log_failure_msg "could not access pidfile for $DESC" ;;
>       *) log_success_msg "$DESC is not running" ;;
>     esac
>     exit "$stat"
>     ;;
>   *)
>         echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}" >&2
>         exit 3
>         ;;
> esac
> 
> :
> 
> # vi:ai sw=4 ts=4 tw=0 et
> ####################################################################################################
> 
> 
> -- 
> Regards,
> Ajay
> 
> 
> Right. Cron is not a full shell and does not by default source things like .profile.
crons man pages discuss this.
> 
> A shortcut is sometimes 
> * * * * * /etc/profile & cmd
> 
> 
> 
> -- 
> Sorry this was sent from mobile. Will do less grammar and spell check than usual.
> 
> 
> 
> -- 
> Regards,
> Ajay


Mime
View raw message