diff options
-rw-r--r-- | lib/zbatery.rb | 3 | ||||
-rwxr-xr-x | t/t0003-reopen-logs.sh | 17 |
2 files changed, 17 insertions, 3 deletions
diff --git a/lib/zbatery.rb b/lib/zbatery.rb index 08ac5b1..735b1e6 100644 --- a/lib/zbatery.rb +++ b/lib/zbatery.rb @@ -75,6 +75,7 @@ module Rainbows end def join + at_exit { unlink_pid_safe(pid) if pid } trap(:INT) { exit!(0) } trap(:TERM) { exit!(0) } trap(:QUIT) { Thread.new { stop } } @@ -102,7 +103,7 @@ module Rainbows def stop(graceful = true) Rainbows.quit! - exit!(0) unless graceful + graceful ? exit : exit!(0) end def before_fork diff --git a/t/t0003-reopen-logs.sh b/t/t0003-reopen-logs.sh index dddc8e3..42c7222 100755 --- a/t/t0003-reopen-logs.sh +++ b/t/t0003-reopen-logs.sh @@ -3,7 +3,7 @@ nr_client=${nr_client-2} . ./test-lib.sh -t_plan 19 "reopen rotated logs" +t_plan 20 "reopen rotated logs" t_begin "setup and startup" && { rtmpfiles curl_out curl_err r_rot @@ -96,7 +96,20 @@ t_begin "server is now writing logs to new stderr" && { } t_begin "stop server" && { - kill $zbatery_pid + kill -QUIT $zbatery_pid +} + +t_begin "wait and ensure pid file no longer exists" && { + max=0 + while test $max -lt 60 && kill -0 $zbatery_pid 2>/dev/null + do + sleep 1 + max=$(($max + 1)) + done + if test -f "$pid" + then + die "$pid should be unlinked at shutdown" + fi } dbgcat r_err |