From decbb9936a25dfedf6ecd916d8e0403f06217ec9 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 22 Mar 2020 08:58:49 +0000 Subject: [PATCH] daemon: unlink .oldbin PID file correctly We need to track the PID file having ".oldbin" appended to it while a SIGUSR2 upgrade is in progress and ensure it is unlinked on SIGQUIT. --- lib/PublicInbox/Daemon.pm | 4 ++-- t/httpd-unix.t | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/PublicInbox/Daemon.pm b/lib/PublicInbox/Daemon.pm index 3d582e35..4ff7cad4 100644 --- a/lib/PublicInbox/Daemon.pm +++ b/lib/PublicInbox/Daemon.pm @@ -247,7 +247,7 @@ sub daemonize () { write_pid($pid_file); # for ->DESTROY: - bless { pid => $$, pid_file => $pid_file }, __PACKAGE__; + bless { pid => $$, pid_file => \$pid_file }, __PACKAGE__; } sub worker_quit { # $_[0] = signal name or number (unused) @@ -663,7 +663,7 @@ sub write_pid ($) { } sub DESTROY { - unlink_pid_file_safe_ish($_[0]->{pid}, $_[0]->{pid_file}); + unlink_pid_file_safe_ish($_[0]->{pid}, ${$_[0]->{pid_file}}); } 1; diff --git a/t/httpd-unix.t b/t/httpd-unix.t index 02f5e4a9..a0fe1e31 100644 --- a/t/httpd-unix.t +++ b/t/httpd-unix.t @@ -163,6 +163,7 @@ SKIP: { # drop the old parent kill('QUIT', $old_pid) or die "QUIT failed: $!"; delay_until(sub { !kill(0, $old_pid) }); + ok(!-f "$pid_file.oldbin", '.oldbin PID file gone'); # drop the new child check_sock($unix); -- 2.44.0