From: Gurucharan Shetty Date: Wed, 27 Mar 2013 21:15:05 +0000 (-0700) Subject: ovs-lib: Wait for a longer time after SIGKILL. X-Git-Tag: sliver-openvswitch-1.10.90-1~10^2~25 X-Git-Url: http://git.onelab.eu/?p=sliver-openvswitch.git;a=commitdiff_plain;h=89bc5283b0f941c38ce6188f52bf3e6aa5d4dbfe ovs-lib: Wait for a longer time after SIGKILL. Currently, when we stop a daemon, we first send it SIGTERM. If SIGTERM did not work within ~5 seconds, we send a SIGKILL. After sending SIGKILL, we wait only for 4 seconds, before giving up. If the system is extremely busy, there is a chance that a process is not killed by the kernel within 4 seconds. In such a case, when we try to start the daemon immediately, we see that the pid inside the pid-file is valid and assume that the daemon is still running. This leaves us in a state, where the daemon is actually not running. This patch increases the time waiting for the kernel to kill the process to 60 seconds. Bug #15404. Signed-off-by: Gurucharan Shetty --- diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in index d010abfe4..a441c3d08 100644 --- a/utilities/ovs-lib.in +++ b/utilities/ovs-lib.in @@ -172,7 +172,10 @@ start_daemon () { stop_daemon () { if test -e "$rundir/$1.pid"; then if pid=`cat "$rundir/$1.pid"`; then - for action in TERM .1 .25 .65 1 1 1 1 KILL 1 1 1 1 FAIL; do + for action in TERM .1 .25 .65 1 1 1 1 KILL 1 1 1 2 10 15 30 FAIL; do + if pid_exists "$pid" >/dev/null 2>&1; then :; else + return 0 + fi case $action in TERM) action "Killing $1 ($pid)" kill $pid @@ -185,11 +188,7 @@ stop_daemon () { return 1 ;; *) - if pid_exists $pid >/dev/null 2>&1; then - sleep $action - else - return 0 - fi + sleep $action ;; esac done