]> Sergey Matveev's repositories - public-inbox.git/commitdiff
public-inbox-watch: support reloading config with SIGHUP
authorEric Wong <e@80x24.org>
Thu, 11 Aug 2016 19:15:23 +0000 (19:15 +0000)
committerEric Wong <e@80x24.org>
Fri, 12 Aug 2016 02:25:50 +0000 (02:25 +0000)
This can be useful for adding new lists, as restarting is
expensive (but still non-lossy).

script/public-inbox-watch

index 42ae55ae9b760567e4238738329a7457a59994b5..bb655929fdbf0050a5f37d4ed622eab759962114 100755 (executable)
@@ -5,10 +5,15 @@ use strict;
 use warnings;
 use PublicInbox::WatchMaildir;
 use PublicInbox::Config;
-my $config = PublicInbox::Config->new;
-my $watch_md = PublicInbox::WatchMaildir->new($config);
+my ($config, $watch_md);
+my $reload = sub {
+       $config = PublicInbox::Config->new;
+       $watch_md = PublicInbox::WatchMaildir->new($config);
+};
+$reload->();
 if ($watch_md) {
-       my $scan = sub { $watch_md->scan };
+       my $scan = sub { $watch_md->scan if $watch_md };
+       $SIG{HUP} = $reload;
        $SIG{USR1} = $scan;
        $SIG{ALRM} = sub { $SIG{ALRM} = 'DEFAULT'; $scan->() };
        alarm(1);