Hi, On Tue, Jan 13, 2009 at 06:01:46PM +0000, Bart Cortooms wrote: > The following patch for the Debian package of Maatkit adds an init script for > mk-slave-delay, which makes it easy to automatically start mk-slave-delay on > every boot.
I've updated the patch to take advantage of the --pid option in newer versions of mk-slave-delay. I'd originally created the init script for Maatkit 1877, and overlooked the fact that there already is support for creating pid files in later versions of Maatkit. Updated patch which adds an init script for mk-slave-delay attached. -- Bart
diff -N -ru maatkit-2979.orig/debian/README.Debian maatkit-2979/debian/README.Debian --- maatkit-2979.orig/debian/README.Debian 1970-01-01 00:00:00.000000000 +0000 +++ maatkit-2979/debian/README.Debian 2009-03-10 15:17:38.000000000 +0000 @@ -0,0 +1,3 @@ +You can start mk-slave-delay(1p) on every boot by editing +/etc/default/mk-slave-delay and setting START to "yes". To control various +mk-slave-delay arguments such as the delay time, change DAEMON_OPTS. diff -N -ru maatkit-2979.orig/debian/maatkit.mk-slave-delay.default maatkit-2979/debian/maatkit.mk-slave-delay.default --- maatkit-2979.orig/debian/maatkit.mk-slave-delay.default 1970-01-01 00:00:00.000000000 +0000 +++ maatkit-2979/debian/maatkit.mk-slave-delay.default 2009-03-10 15:10:20.000000000 +0000 @@ -0,0 +1,7 @@ +# Defaults for mk-slave-delay - sourced by /etc/init.d/mk-slave-delay + +# Start mk-slave-delay on boot? +START=no + +# Startup options for mk-slave-delay +DAEMON_OPTS="--no-continue --delay 1h --interval 10s F=/etc/mysql/debian.cnf,h=localhost" diff -N -ru maatkit-2979.orig/debian/maatkit.mk-slave-delay.init maatkit-2979/debian/maatkit.mk-slave-delay.init --- maatkit-2979.orig/debian/maatkit.mk-slave-delay.init 1970-01-01 00:00:00.000000000 +0000 +++ maatkit-2979/debian/maatkit.mk-slave-delay.init 2009-03-10 15:15:20.000000000 +0000 @@ -0,0 +1,150 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: mk-slave-delay +# Required-Start: $mysql +# Required-Stop: $mysql +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: MySQL slave delay +# Description: This starts a daemon which adds a delay to the MySQL +# replication for this slave. +### END INIT INFO + +# Do NOT "set -e" + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="MySQL slave delay" +NAME=mk-slave-delay +DAEMON=/usr/bin/mk-slave-delay +PIDFILE=/var/run/$NAME.pid +DAEMON_STD_OPTS="-q --daemonize --pid $PIDFILE" +SCRIPTNAME=/etc/init.d/$NAME + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# Exit if mk-slave-delay should not be started on boot +[ "$START" = "yes" ] || exit 0 + +# 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 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 + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ + -- $DAEMON_STD_OPTS $DAEMON_OPTS \ + || return 1 + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \ + -- $DAEMON_STD_OPTS $DAEMON_OPTS \ + || 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 --stop --quiet --pidfile $PIDFILE --retry=TERM/30/KILL/5 + 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 --pidfile $PIDFILE \ + --retry=0/30/KILL/5 --exec $DAEMON + [ "$?" = 2 ] && return 2 + return "$RETVAL" +} + +# +# Function that sends a SIGHUP to the daemon/service +# +do_reload() { + # + # If the daemon can reload its configuration without + # restarting (for example, when it is sent a SIGHUP), + # then implement that here. + # + start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE + return 0 +} + +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 + ;; + #reload|force-reload) + # + # If do_reload() is not implemented then leave this commented out + # and leave 'force-reload' as an alias for 'restart'. + # + #log_daemon_msg "Reloading $DESC" "$NAME" + #do_reload + #log_end_msg $? + #;; + restart|force-reload) + # + # If the "reload" option is implemented then remove the + # 'force-reload' alias + # + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + 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 + ;; + *) + #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 + exit 3 + ;; +esac + +: diff -N -ru maatkit-2979.orig/debian/rules maatkit-2979/debian/rules --- maatkit-2979.orig/debian/rules 2009-03-10 15:09:28.000000000 +0000 +++ maatkit-2979/debian/rules 2009-03-10 15:10:20.000000000 +0000 @@ -33,6 +33,7 @@ dh_installchangelogs Changelog dh_installdocs dh_install + dh_installinit --name=mk-slave-delay dh_installman dh_compress dh_fixperms