[ovs-dev] [PATCH] Wait for daemons to die in init.d script "stop" commands.
Ben Pfaff
blp at nicira.com
Thu Aug 12 17:18:27 UTC 2010
Sometimes it takes a moment for the OVS daemons to die. When that happens,
the "start" half of "openvswitch restart" can fail when ovsdb-tool
runs, because ovsdb-server will still have the lock on the database if it
has not exited yet. So this commit just makes the "stop" half wait for
the daemons to really die.
Bug #3369.
---
debian/openvswitch-switch.init | 4 ++--
xenserver/etc_init.d_openvswitch | 7 +++++++
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/debian/openvswitch-switch.init b/debian/openvswitch-switch.init
index a5b6857..a933a21 100755
--- a/debian/openvswitch-switch.init
+++ b/debian/openvswitch-switch.init
@@ -273,13 +273,13 @@ case "$1" in
;;
stop)
echo -n "Stopping ovs-vswitchd: "
- start-stop-daemon --stop --quiet --oknodo \
+ start-stop-daemon --stop --quiet --oknodo --retry 5 \
--pidfile /var/run/openvswitch/ovs-vswitchd.pid \
--exec $ovs_vswitchd
echo "ovs-vswitchd."
echo -n "Stopping ovsdb-server: "
- start-stop-daemon --stop --quiet --oknodo \
+ start-stop-daemon --stop --quiet --oknodo --retry 5 \
--pidfile /var/run/openvswitch/ovsdb-server.pid \
--exec $ovsdb_server
echo "ovsdb-server."
diff --git a/xenserver/etc_init.d_openvswitch b/xenserver/etc_init.d_openvswitch
index 0988fcc..c52864e 100755
--- a/xenserver/etc_init.d_openvswitch
+++ b/xenserver/etc_init.d_openvswitch
@@ -254,6 +254,13 @@ function stop_daemon {
if test -f "$pidfile"; then
local pid=$(cat "$pidfile")
action "Killing `basename $BINARY` ($pid)" kill $pid
+ for delay in .1 .25 .65 1 1 1 1; do
+ if kill -0 $pid >/dev/null 2>&1; then
+ sleep $delay
+ else
+ break
+ fi
+ done
rm -f "$pidfile"
fi
}
--
1.7.1
More information about the dev
mailing list