From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 48B181FB06 for ; Thu, 21 Jan 2021 19:46:25 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 08/12] lei: remove INT/QUIT/TERM handlers, fix daemon EOF Date: Thu, 21 Jan 2021 19:46:20 +0000 Message-Id: <20210121194624.32002-9-e@80x24.org> In-Reply-To: <20210121194624.32002-1-e@80x24.org> References: <20210121194624.32002-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: 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. --- lib/PublicInbox/IPC.pm | 1 + lib/PublicInbox/LEI.pm | 9 ++++++++- 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 } 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);