diff options
author | Eric Wong <e@80x24.org> | 2021-01-21 19:46:20 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2021-01-22 16:18:01 -0400 |
commit | 3e11b08275331783f4860a590b1555b879c77328 (patch) | |
tree | 05a0c523e5a62fa1778aa921c56c0e40b8f2762f | |
parent | d035e8d0ec8c7e38ff921fc65e4925644721bb36 (diff) | |
download | public-inbox-3e11b08275331783f4860a590b1555b879c77328.tar.gz |
The signal handlers on the client side were unnecessary, all we need is to handle socket EOF properly in the daemon by killing xsearch and l2m workers.
-rw-r--r-- | lib/PublicInbox/IPC.pm | 1 | ||||
-rw-r--r-- | lib/PublicInbox/LEI.pm | 9 | ||||
-rwxr-xr-x | script/lei | 5 |
3 files changed, 9 insertions, 6 deletions
diff --git a/lib/PublicInbox/IPC.pm b/lib/PublicInbox/IPC.pm index 24f45e03..dbb87e4e 100644 --- a/lib/PublicInbox/IPC.pm +++ b/lib/PublicInbox/IPC.pm @@ -408,6 +408,7 @@ sub DESTROY { my $ppid = $self->{-wq_ppid}; wq_kill($self) if $ppid && $ppid == $$; wq_close($self); + wq_wait_old($self); ipc_worker_stop($self); } diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm index 11ea385f..ccfc1649 100644 --- a/lib/PublicInbox/LEI.pm +++ b/lib/PublicInbox/LEI.pm @@ -767,7 +767,14 @@ sub accept_dispatch { # Listener {post_accept} callback sub dclose { my ($self) = @_; - delete $self->{lxs}; # stops LeiXSearch queries + for my $f (qw(lxs l2m)) { + my $wq = delete $self->{$f} or next; + if ($wq->wq_kill) { + $self->wq_close + } elsif ($wq->wq_kill_old) { + $wq->wq_wait_old; + } + } close(delete $self->{1}) if $self->{1}; # may reap_compress $self->close if $self->{sock}; # PublicInbox::DS::close } @@ -81,11 +81,6 @@ Falling back to (slow) one-shot mode while (my ($k, $v) = each %ENV) { $buf .= "\0$k=$v" } $buf .= "\0\0"; $send_cmd->($sock, [ 0, 1, 2, fileno($dh) ], $buf, MSG_EOR); - $SIG{TERM} = $SIG{INT} = $SIG{QUIT} = sub { - my ($sig) = @_; # 'TERM', not an integer :< - $SIG{$sig} = 'DEFAULT'; - kill($sig, $$); # exit($signo + 128) - }; my $x_it_code = 0; while (1) { my (@fds) = $recv_cmd->($sock, $buf, 4096 * 33); |