From 3bfbaacac15a14a379e360dc2d6c5989f49c3769 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 31 Aug 2020 04:41:33 +0000 Subject: watch: log signal activities to STDERR Sometimes it may not be apparent when/if a signal is processed, this hopefully improves the situation. We'll also change the process title when we're quitting to better inform users. --- script/public-inbox-watch | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'script/public-inbox-watch') diff --git a/script/public-inbox-watch b/script/public-inbox-watch index 02491860..b6c6b202 100755 --- a/script/public-inbox-watch +++ b/script/public-inbox-watch @@ -11,18 +11,30 @@ use PublicInbox::Syscall qw($SFD_NONBLOCK); my $oldset = PublicInbox::Sigfd::block_signals(); STDOUT->autoflush(1); STDERR->autoflush(1); -my ($config, $watch); +local $0 = $0; # local since this script may be eval-ed +my $watch = PublicInbox::Watch->new(PublicInbox::Config->new); my $reload = sub { - $config = PublicInbox::Config->new; - $watch->quit if $watch; - $watch = PublicInbox::Watch->new($config); + my $prev = $watch or return; # SIGQUIT issued + $watch->quit; + $watch = PublicInbox::Watch->new(PublicInbox::Config->new); + if ($watch) { + warn("I: reloaded\n"); + } else { + warn("E: reloading failed\n"); + $watch = $prev; + } }; -$reload->(); + if ($watch) { - my $scan = sub { $watch->trigger_scan('full') if $watch }; + my $scan = sub { + return if !$watch; + warn "I: scanning\n"; + $watch->trigger_scan('full'); + }; my $quit = sub { $watch->quit if $watch; $watch = undef; + $0 .= ' quitting'; }; my $sig = { HUP => $reload, -- cgit v1.2.3-24-ge0c7