* [PATCH 08/12] lei: remove INT/QUIT/TERM handlers, fix daemon EOF
2021-01-21 19:46 6% [PATCH 00/12] lei: another dump Eric Wong
@ 2021-01-21 19:46 7% ` Eric Wong
0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2021-01-21 19:46 UTC (permalink / raw)
To: meta
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);
^ permalink raw reply related [relevance 7%]
* [PATCH 00/12] lei: another dump
@ 2021-01-21 19:46 6% Eric Wong
2021-01-21 19:46 7% ` [PATCH 08/12] lei: remove INT/QUIT/TERM handlers, fix daemon EOF Eric Wong
0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2021-01-21 19:46 UTC (permalink / raw)
To: meta
1/12 is a user-visible change, but there's no users, yet :P
more externals work coming...
12/12 may be too specific to bash, help from non-bash users
appreciated
Eric Wong (12):
lei_overview: rename {relevance} => {pct}
lei q: retrieve keywords for local, non-external messages
lei_xsearch: eliminate some unused, commented-out code
lei: show {pct} and {oid} in From_ lines and filenames
lei: fix inadvertant FD sharing
lei_to_mail: avoid segfault on exit
lei: oneshot: use client $io[2] for placeholder
lei: remove INT/QUIT/TERM handlers, fix daemon EOF
lei_xsearch: reduce reference paths to lxs
lei: remove @TO_CLOSE_ATFORK_CHILD
lei: forget-external support with canonicalization
lei forget-external: bash completion support
MANIFEST | 1 +
lib/PublicInbox/IPC.pm | 23 +++++++--
lib/PublicInbox/LEI.pm | 86 ++++++++++++++++++++--------------
lib/PublicInbox/LeiExternal.pm | 71 ++++++++++++++++++++++++----
lib/PublicInbox/LeiOverview.pm | 17 +++----
lib/PublicInbox/LeiQuery.pm | 21 +++++----
lib/PublicInbox/LeiSearch.pm | 16 ++-----
lib/PublicInbox/LeiToMail.pm | 80 ++++++++++++++++++-------------
lib/PublicInbox/LeiXSearch.pm | 60 ++++++++++++------------
lib/PublicInbox/Search.pm | 20 +++++++-
script/lei | 5 --
t/lei.t | 9 ++++
t/lei_external.t | 18 +++++++
t/lei_to_mail.t | 41 +++++++++-------
14 files changed, 300 insertions(+), 168 deletions(-)
create mode 100644 t/lei_external.t
^ permalink raw reply [relevance 6%]
Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2021-01-21 19:46 6% [PATCH 00/12] lei: another dump Eric Wong
2021-01-21 19:46 7% ` [PATCH 08/12] lei: remove INT/QUIT/TERM handlers, fix daemon EOF Eric Wong
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).