user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [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).