From: Eric Wong Date: Mon, 31 Aug 2020 04:41:33 +0000 (+0000) Subject: watch: log signal activities to STDERR X-Git-Tag: v1.6.0~67 X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=commitdiff_plain;h=3bfbaacac15a14a379e360dc2d6c5989f49c3769 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. --- 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,