From 90d1d769b9af83d6d1464658169e72b9467ab384 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 23 Nov 2011 09:52:48 +0000 Subject: zbatery: unlink pid file during graceful shutdown We don't have the same shutdown sequence as unicorn, there is no need to leave pid files hanging around during upgrades. Of course we can't guarantee this (or any) behavior for non-graceful shutdowns... --- lib/zbatery.rb | 3 ++- 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 -- cgit v1.2.3-24-ge0c7