Package: glusterfs-server Version: 2.0.4-2 Severity: important Tags: patch
When stopping the glusterd daemon, the initscript uses start-stop-daemon with the "--exec" option which "Checks for processes that are instances of this executable". Glusterfs uses the same binary for both server and client processes, so if a machine has both processes running, start-stop-daemon thinks the server process is still running. The initscript then goes on to kill the client process too. Adding the --name option fixes this. The status initscript command relies on the same "--exec" option so could misidentify the gluster client process as the server process (unlikely but possible). Adding a --name option fixes this too.
commit 07d4979536e5bd01b3a251c2d226d08942a91e49 Author: John Leach <j...@johnleach.co.uk> Date: Mon Jul 27 15:57:52 2009 +0100 Fix initscript stop and status functions. stop would kill client processes too and status could misidentify client processes as server processes. diff --git a/debian/glusterfs-server.init b/debian/glusterfs-server.init index 15df29d..58759f0 100755 --- a/debian/glusterfs-server.init +++ b/debian/glusterfs-server.init @@ -68,19 +68,7 @@ do_stop() # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME - RETVAL="$?" - [ "$RETVAL" = 2 ] && return 2 - # Wait for children to finish too if this is a daemon that forks - # and if the daemon is only ever run from this initscript. - # If the above conditions are not satisfied then add some other code - # that waits for the process to drop all resources that could be - # needed by services started subsequently. A last resort is to - # sleep for some time. - start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON - [ "$?" = 2 ] && return 2 - # Many daemons don't delete their pidfiles when they exit. - rm -f $PIDFILE - return "$RETVAL" + return $? } # @@ -88,7 +76,7 @@ do_stop() # do_status() { - start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --name $NAME --test > /dev/null RETVAL="$?" if [ "$RETVAL" = 1 ]; then log_success_msg "$DESC is running."