From: Eric Wong Date: Thu, 21 Jan 2021 19:46:20 +0000 (+0000) Subject: lei: remove INT/QUIT/TERM handlers, fix daemon EOF X-Git-Tag: v1.7.0~1327 X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=commitdiff_plain;h=3e11b08275331783f4860a590b1555b879c77328 lei: remove INT/QUIT/TERM handlers, fix daemon EOF 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. --- 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 } diff --git a/script/lei b/script/lei index a4a0217b..8dcea562 100755 --- a/script/lei +++ b/script/lei @@ -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);