[ https://issues.apache.org/jira/browse/CASSANDRA-8738?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14305548#comment-14305548 ]
Donald Smith edited comment on CASSANDRA-8738 at 2/4/15 5:36 PM: ----------------------------------------------------------------- Here's the change in context: {noformat} stop) # Cassandra shutdown echo -n "Shutdown Cassandra: " su $CASSANDRA_OWNR -c "kill `cat $pid_file`" for t in `seq 40`; do $0 status > /dev/null 2>&1 && sleep 0.5 || break; done # Adding a sleep here to give jmx time to wind down (CASSANDRA-4483). Not ideal... # Adam Holmberg suggests this, but that would break if the jmx port is changed # for t in `seq 40`; do netstat -tnlp | grep "0.0.0.0:7199" > /dev/null 2>&1 && sleep 0.1 || break; done sleep 5 THE_STATUS=`$0 status` if [[ $THE_STATUS == *"stopped"* ]] then echo "OK" else echo "ERROR: could not stop the process: $THE_STATUS" exit 1 fi ;; {noformat} was (Author: thinkerfeeler): Here's the change in context: {noformat} stop) # Cassandra shutdown echo -n "Shutdown Cassandra: " su $CASSANDRA_OWNR -c "kill `cat $pid_file`" for t in `seq 40`; do $0 status > /dev/null 2>&1 && sleep 0.5 || break; done # Adding a sleep here to give jmx time to wind down (CASSANDRA-4483). Not ideal... # Adam Holmberg suggests this, but that would break if the jmx port is changed # for t in `seq 40`; do netstat -tnlp | grep "0.0.0.0:7199" > /dev/null 2>&1 && sleep 0.1 || break; done sleep 5 THE_STATUS=`$0 status` if [[ $THE_STATUS == *"stopped"* ]] then echo "OK" else echo "ERROR: could not stop the process: $THE_STATUS" fi ;; {noformat} > "/etc/init.d/cassandra stop" prints OK even when it doesn't work > ---------------------------------------------------------------- > > Key: CASSANDRA-8738 > URL: https://issues.apache.org/jira/browse/CASSANDRA-8738 > Project: Cassandra > Issue Type: Improvement > Reporter: Donald Smith > > Sometimes I do {{/etc/init.d/cassandra stop}} and it prints out OK, but the > server is still running. (This happens, for example, if it's busy doing > GCs.) The current init script prints out OK after sleeping but without > checking if the process really stopped. I suggest changing it to: > {noformat} > pd0-cassandra16 ~> diff -C 1 cassandra cassandra-original > *** cassandra 2015-02-04 09:15:58.088209988 -0800 > --- cassandra-original 2015-02-04 09:15:40.293767501 -0800 > *************** > *** 69,77 **** > sleep 5 > ! THE_STATUS=`$0 status` > ! if [[ $THE_STATUS == *"stopped"* ]] > ! then > ! echo "OK" > ! else > ! echo "ERROR: could not stop the process: $THE_STATUS" > ! exit 1 > ! fi > ;; > --- 69,71 ---- > sleep 5 > ! echo "OK" > ;; > {noformat} > Then it prints out OK only if the stop succeeded. Otherwise it prints out a > message like > {quote} > ERROR: could not stop the process: cassandra (pid 10764) is running... > {quote} -- This message was sent by Atlassian JIRA (v6.3.4#6332)