* [PATCH 4/6] watch: simplify DirIdle object cleanup
2023-10-31 20:42 6% [PATCH 0/6] ds: object lifetime shortening Eric Wong
@ 2023-10-31 20:42 7% ` Eric Wong
0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2023-10-31 20:42 UTC (permalink / raw)
To: meta
There's no need to waste time nor reach into DS internals to
map FDs to Perl objects, here. LEI.pm has never had to deal
with integer FDs for DirIdle, either.
---
lib/PublicInbox/Watch.pm | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/lib/PublicInbox/Watch.pm b/lib/PublicInbox/Watch.pm
index 41b77dc1..c2b1312a 100644
--- a/lib/PublicInbox/Watch.pm
+++ b/lib/PublicInbox/Watch.pm
@@ -256,9 +256,8 @@ sub quit { # may be called in IMAP/NNTP children
%{$self->{opendirs}} = ();
_done_for_now($self);
quit_done($self);
- if (defined(my $fd = delete $self->{dir_idle_fd})) {
- my $di = $PublicInbox::DS::DescriptorMap{$fd};
- $di->close if $di && $di->can('add_watches');
+ if (my $dir_idle = delete $self->{dir_idle}) {
+ $dir_idle->close if $dir_idle;
}
if (my $idle_mic = delete $self->{idle_mic}) { # IMAP child
return unless $idle_mic->IsConnected && $idle_mic->Socket;
@@ -283,8 +282,7 @@ sub watch_fs_init ($) {
};
require PublicInbox::DirIdle;
# inotify_create + EPOLL_CTL_ADD
- my $dir_idle = PublicInbox::DirIdle->new($cb);
- $self->{dir_idle_fd} = fileno($dir_idle->{sock}) if $dir_idle->{sock};
+ my $dir_idle = $self->{dir_idle} = PublicInbox::DirIdle->new($cb);
$dir_idle->add_watches([keys %{$self->{mdmap}}]);
}
@@ -383,8 +381,7 @@ sub watch_imap_idle_1 ($$$) {
sub watch_atfork_child ($) {
my ($self) = @_;
- delete $self->{pids};
- delete $self->{opendirs};
+ delete @$self{qw(dir_idle pids opendirs)};
my $sig = delete $self->{sig};
$sig->{CHLD} = $sig->{HUP} = $sig->{USR1} = 'DEFAULT';
# TERM/QUIT/INT call ->quit, which works in both parent+child
^ permalink raw reply related [relevance 7%]
* [PATCH 0/6] ds: object lifetime shortening
@ 2023-10-31 20:42 6% Eric Wong
2023-10-31 20:42 7% ` [PATCH 4/6] watch: simplify DirIdle object cleanup Eric Wong
0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2023-10-31 20:42 UTC (permalink / raw)
To: meta
1 and 2 do the bulk of the work
3 and 4 are things I noticed when working on 2
5 is a fix while preparing for 6
6 is something I've wanted to do for a long time.
Anyways, the code reductions always make me happy.
Eric Wong (6):
ds: next_tick: shorten object lifetimes
ds: do not defer close
ds: move maxevents further down the stack
watch: simplify DirIdle object cleanup
pop3: use SSL_shutdown(3ssl) if appropriate
ds: make ->close behave like CORE::close
lib/PublicInbox/CidxComm.pm | 2 +-
lib/PublicInbox/CidxLogP.pm | 2 +-
lib/PublicInbox/DS.pm | 143 ++++++++++++------------------------
lib/PublicInbox/DSKQXS.pm | 3 +-
lib/PublicInbox/DSPoll.pm | 2 +-
lib/PublicInbox/Epoll.pm | 5 +-
lib/PublicInbox/POP3.pm | 2 +-
lib/PublicInbox/Select.pm | 2 +-
lib/PublicInbox/Watch.pm | 11 +--
t/ds-poll.t | 14 ++--
t/epoll.t | 4 +-
11 files changed, 71 insertions(+), 119 deletions(-)
^ 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 --
2023-10-31 20:42 6% [PATCH 0/6] ds: object lifetime shortening Eric Wong
2023-10-31 20:42 7% ` [PATCH 4/6] watch: simplify DirIdle object cleanup 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).