[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