From 89bc5283b0f941c38ce6188f52bf3e6aa5d4dbfe Mon Sep 17 00:00:00 2001 From: Gurucharan Shetty Date: Wed, 27 Mar 2013 14:15:05 -0700 Subject: [PATCH] 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 --- utilities/ovs-lib.in | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) 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 -- 2.43.0