unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
From: Eric Wong <e@80x24.org>
To: meta@public-inbox.org
Subject: [PATCH 1/6] ds: next_tick: shorten object lifetimes
Date: Tue, 31 Oct 2023 20:42:50 +0000	[thread overview]
Message-ID: <20231031204255.1837649-2-e@80x24.org> (raw)
In-Reply-To: <20231031204255.1837649-1-e@80x24.org>

Drop reference counts ASAP in case it saves us some memory
sooner rather than later.  This ought to give us more predictable
resource use and ensure OnDestroy callbacks fire sooner.
There's no need to use `local' to clobber the arrayref anymore,
either.

AFAIK, this doesn't fix any known bug, but more predictability
will make it easier to debug things going forward.
---
 lib/PublicInbox/DS.pm | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm
index 6041c6b5..708fe14d 100644
--- a/lib/PublicInbox/DS.pm
+++ b/lib/PublicInbox/DS.pm
@@ -136,16 +136,12 @@ sub _InitPoller () {
 sub now () { clock_gettime(CLOCK_MONOTONIC) }
 
 sub next_tick () {
-	local $cur_runq = $nextq or return;
+	$cur_runq = $nextq or return;
 	$nextq = undef;
-	for my $obj (@$cur_runq) {
+	while (my $obj = shift @$cur_runq) {
 		# avoid "ref" on blessed refs to workaround a Perl 5.16.3 leak:
 		# https://rt.perl.org/Public/Bug/Display.html?id=114340
-		if (blessed($obj)) {
-			$obj->event_step;
-		} else {
-			$obj->();
-		}
+		blessed($obj) ? $obj->event_step : $obj->();
 	}
 }
 

  reply	other threads:[~2023-10-31 20:42 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-31 20:42 [PATCH 0/6] ds: object lifetime shortening Eric Wong
2023-10-31 20:42 ` Eric Wong [this message]
2023-10-31 20:42 ` [PATCH 2/6] ds: do not defer close Eric Wong
2023-10-31 20:42 ` [PATCH 3/6] ds: move maxevents further down the stack Eric Wong
2023-10-31 20:42 ` [PATCH 4/6] watch: simplify DirIdle object cleanup Eric Wong
2023-10-31 20:42 ` [PATCH 5/6] pop3: use SSL_shutdown(3ssl) if appropriate Eric Wong
2023-10-31 20:42 ` [PATCH 6/6] ds: make ->close behave like CORE::close Eric Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://public-inbox.org/README

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231031204255.1837649-2-e@80x24.org \
    --to=e@80x24.org \
    --cc=meta@public-inbox.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).