Bug#704833: (pre-approval) unblock: virtuoso-opensource/6.1.4+dfsg1-7
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Please unblock package virtuoso-opensource
Hi Release-Team!
We, the Qt/KDE team, would like you to check if the following changes
are within what you are expecting for getting an unblock.
The most important stuff was solving RC #704521 [2], but while looking at it I
found other issues. The complete list of changes in the init script is:
* I removed "set -e" from the script because (according to a footnote in
policy [1]) lsb/init-functions is incompatible with that option.
Furthermore, even the script itself did not deal with that option
correctly, e.g., a non-0 exit code from start-stop-daemon would have
terminated the script without proper logging. This also allowed for
simplification where the $errcode was used previously.
* The RC bug about stopping the daemon [2] is fixed in the stop_server
function by using start-stop-daemon with a proper --retry argument,
instead of killproc. The script has two modes of operation (one to use
root, one with a dedicated user for the daemon), hence there are two
branches in stop_server - I did not simplify this to keep the diff smaller.
* The script used to INT the server due to [3], but according to
upstream documentation [4] TERM should be used in rc.d scripts, so
that's what it does now.
* I removed reload_server and the reload directive because virtuoso does
not support reloading (it used to print an error there, and then exit 0).
* I removed force-stop since (a) it's not mandated or even recommended
by anything (b) stop itself will already use KILL if TERM does not work
and (c) it essentially just duplicated the retry-functionality of
start-stop-daemon, but with way too long delays (60s).
* The changes for the restart directive ensure that the script handles
failure to stop the server appropriately. They also remove the 60s-delay
between stop and start (which is no longer needed now that stop_daemon
properly waits for virtuoso to quit).
[1] http://www.debian.org/doc/debian-policy/footnotes.html#f81
[2] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=704521
[3] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=632060
[4] http://docs.openlinksw.com/virtuoso/signalsandexitcodes.html
Diffstats:
changelog | 15 ++++
control | 5 -
virtuoso-opensource-6.1.init | 131
++++++++++---------------------------------
3 files changed, 49 insertions(+), 102 deletions(-)
Kind regards,
Ralf Jung
Debian Qt/KDE team
unblock virtuoso-opensource/6.1.4+dfsg1-7
-- System Information:
Debian Release: 7.0
APT prefers testing
APT policy: (990, 'testing'), (100, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.8.6 (SMP w/4 CPU cores)
diff -Nru virtuoso-opensource-6.1.4+dfsg1/debian/changelog virtuoso-opensource-6.1.4+dfsg1/debian/changelog
--- virtuoso-opensource-6.1.4+dfsg1/debian/changelog 2013-02-25 09:49:36.000000000 -0300
+++ virtuoso-opensource-6.1.4+dfsg1/debian/changelog 2013-04-06 10:29:22.000000000 -0300
@@ -1,3 +1,18 @@
+virtuoso-opensource (6.1.4+dfsg1-7) UNRELEASED; urgency=low
+
+ [ Lisandro Damián Nicanor Pérez Meyer ]
+ * Add Sune and myself to Uploaders.
+
+ [ Ralf Jung ]
+ * init script: Use start-stop-daemon (Closes: 704521)
+ * init script: Do not use "set -e", that's incompatible with
+ lsb/init-scripts
+ * init script: Stop attemtping to restart when stopping failed
+ * Change maintainer to Debian Krap team
+ * Remove obsolete DM-Upload-Allowed
+
+ -- Debian Krap Maintainers <debian-qt-kde@lists.debian.org> Thu, 04 Apr 2013 17:04:31 +0200
+
virtuoso-opensource (6.1.4+dfsg1-6) unstable; urgency=low
* Add safer-timeout.patch, avoids random FTBFS'es. These random FTBFS'es
diff -Nru virtuoso-opensource-6.1.4+dfsg1/debian/control virtuoso-opensource-6.1.4+dfsg1/debian/control
--- virtuoso-opensource-6.1.4+dfsg1/debian/control 2013-02-02 01:57:32.000000000 -0300
+++ virtuoso-opensource-6.1.4+dfsg1/debian/control 2013-04-06 10:29:22.000000000 -0300
@@ -1,8 +1,9 @@
Source: virtuoso-opensource
Section: database
Priority: optional
-Maintainer: José Manuel Santamaría Lema <panfaust@gmail.com>
-DM-Upload-Allowed: yes
+Maintainer: Debian Krap Maintainers <debian-qt-kde@lists.debian.org>
+Uploaders: Lisandro Damian Nicanor Pérez Meyer <lisandro@debian.org>,
+ Sune Vuorela <sune@debian.org>
Standards-Version: 3.9.3
Homepage: http://virtuoso.openlinksw.com/wiki/main/Main/
Vcs-Browser: https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi?p=pkg-virtuoso/pkg-virtuoso.git
diff -Nru virtuoso-opensource-6.1.4+dfsg1/debian/virtuoso-opensource-6.1.init virtuoso-opensource-6.1.4+dfsg1/debian/virtuoso-opensource-6.1.init
--- virtuoso-opensource-6.1.4+dfsg1/debian/virtuoso-opensource-6.1.init 2013-01-21 22:45:48.000000000 -0300
+++ virtuoso-opensource-6.1.4+dfsg1/debian/virtuoso-opensource-6.1.init 2013-04-06 10:28:46.000000000 -0300
@@ -54,11 +54,6 @@
# at /etc/default/$NAME
DAEMON_OPTS="" # Additional options given to the server
-DIETIME=60 # Time to wait for the server to die, in seconds
- # If this value is set too low you might not
- # let some servers to die gracefully and
- # 'restart' will not work
-
STARTTIME=1 # Time to wait for the server to start, in seconds
# If this value is set each time the server is
# started (on start or restart) the script will
@@ -97,9 +92,6 @@
fi
fi
-
-set -e
-
running_pid() {
# Check if a given process pid's cmdline matches a given name
pid=$1
@@ -129,63 +121,35 @@
start-stop-daemon --start --quiet \
--user `id -un` \
--chdir $DBPATH --exec $DAEMON \
- -- $DAEMON_OPTS
- errcode=$?
+ -- $DAEMON_OPTS || return $?
else
# if we are using a daemonuser then change the user id
start-stop-daemon --start --quiet \
--user $DAEMONUSER --chuid $DAEMONUSER \
--chdir $DBPATH --exec $DAEMON \
- -- $DAEMON_OPTS
- errcode=$?
+ -- $DAEMON_OPTS || return $?
fi
# Write the pid file using the process id from virtuoso.lck
sed 's/VIRT_PID=//' $DBPATH/$SHORTNAME.lck > $PIDFILE
- return $errcode
+ return 0
}
stop_server() {
+# http://docs.openlinksw.com/virtuoso/signalsandexitcodes.html says TERM should be used by rc.d scripts, so we do
# Stop the process using the wrapper
if [ -z "$DAEMONUSER" ] ; then
- killproc -p $PIDFILE $DAEMON -INT
- errcode=$?
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE \
+ --user `id -un` \
+ --exec $DAEMON || return $?
else
# if we are using a daemonuser then look for process that match
- start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE \
--user $DAEMONUSER \
- --exec $DAEMON
- errcode=$?
+ --exec $DAEMON || return $?
fi
rm -f $PIDFILE
- return $errcode
-}
-
-reload_server() {
- [ ! -f "$PIDFILE" ] && return 1
- pid=pidofproc $PIDFILE # This is the daemon's pid
- # Send a SIGHUP
- kill -1 $pid
- return $?
-}
-
-force_stop() {
-# Force the process to die killing it manually
- [ ! -e "$PIDFILE" ] && return
- if running ; then
- kill -15 $pid
- # Is it really dead?
- sleep "$DIETIME"s
- if running ; then
- kill -9 $pid
- sleep "$DIETIME"s
- if running ; then
- echo "Cannot kill $NAME (pid=$pid)!"
- exit 1
- fi
- fi
- fi
- rm -f $PIDFILE
+ return 0
}
@@ -219,9 +183,8 @@
log_daemon_msg "Stopping $DESC" "$NAME"
if running ; then
# Only stop the server if we see it running
- errcode=0
- stop_server || errcode=$?
- log_end_msg $errcode
+ stop_server
+ log_end_msg $?
else
# If it's not running don't do anything
log_progress_msg "apparently not running"
@@ -229,30 +192,28 @@
exit 0
fi
;;
- force-stop)
- # First try to stop gracefully the program
- $0 stop
- if running; then
- # If it's still running try to kill it more forcefully
- log_daemon_msg "Stopping (force) $DESC" "$NAME"
- errcode=0
- force_stop || errcode=$?
- log_end_msg $errcode
- fi
- ;;
restart|force-reload)
log_daemon_msg "Restarting $DESC" "$NAME"
- errcode=0
- stop_server || errcode=$?
- # Wait some sensible amount, some server need this
- [ -n "$DIETIME" ] && sleep $DIETIME
- start_server || errcode=$?
- [ -n "$STARTTIME" ] && sleep $STARTTIME
- running || errcode=$?
- log_end_msg $errcode
+ stop_server
+ case "$?" in
+ 0|1)
+ start_server
+ case "$?" in
+ 0) [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time
+ running # check if it still runs
+ log_end_msg $?
+ ;;
+ 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)
-
log_daemon_msg "Checking status of $DESC" "$NAME"
if running ; then
log_progress_msg "running"
@@ -263,39 +224,9 @@
exit 1
fi
;;
- # Use this if the daemon cannot reload
- reload)
- log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
- log_warning_msg "cannot re-read the config file (use restart)."
- ;;
- # And this if it cann
- #reload)
- #
- # If the daemon can reload its config files on the fly
- # for example by sending it SIGHUP, do it here.
- #
- # If the daemon responds to changes in its config file
- # directly anyway, make this a do-nothing entry.
- #
- # log_daemon_msg "Reloading $DESC configuration files" "$NAME"
- # if running ; then
- # reload_server
- # if ! running ; then
- # Process died after we tried to reload
- # log_progress_msg "died on reload"
- # log_end_msg 1
- # exit 1
- # fi
- # else
- # log_progress_msg "server is not running"
- # log_end_msg 1
- # exit 1
- # fi
- #;;
-
*)
N=/etc/init.d/$NAME
- echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
+ echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac
Reply to: