[ovs-dev] [PATCH] ovs-lib: Wait for a longer time after SIGKILL.

Gurucharan Shetty shettyg at nicira.com
Wed Mar 27 21:30:05 UTC 2013


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 exteremely 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 <gshetty at nicira.com>
---
 utilities/ovs-lib.in |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in
index d010abf..0cbb114 100644
--- a/utilities/ovs-lib.in
+++ b/utilities/ovs-lib.in
@@ -172,7 +172,7 @@ 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
                 case $action in
                     TERM)
                         action "Killing $1 ($pid)" kill $pid
@@ -181,8 +181,12 @@ stop_daemon () {
                         action "Killing $1 ($pid) with SIGKILL" kill -9 $pid
                         ;;
                     FAIL)
-                        log_failure_msg "Killing $1 ($pid) failed"
-                        return 1
+                        if pid_exists $pid >/dev/null 2>&1; then
+                            log_failure_msg "Killing $1 ($pid) failed"
+                            return 1
+                        else
+                            return 0
+                        fi
                         ;;
                     *)
                         if pid_exists $pid >/dev/null 2>&1; then
-- 
1.7.9.5




More information about the dev mailing list