From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.2 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, T_SCC_BODY_TEXT_LINE shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 065131F51B for ; Sun, 26 Nov 2023 02:11:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1700964667; bh=OE33ttwLd7a0DO1qa4w6XBgA5eODxjgJBMk2Jmnn16A=; h=From:To:Subject:Date:In-Reply-To:References:From; b=toSbxZwavPjCZFEKnzcBqm5N8P4dO+LQAvtmi1iGAhBynabkHc6S1tjvzvBBjq8gC OYgEzoY834HOBBi/TIrT9Bf3HLrLNIM4YijuzmAyxG/xeZa9igC6jSFu/VQ5WhZh8u ZAzOUZtgmKfhIEvImDW3o9faXBUJNd3cKNdS1BWA= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 7/7] drop redundant calls to DS->Reset Date: Sun, 26 Nov 2023 02:11:05 +0000 Message-ID: <20231126021105.408573-8-e@80x24.org> In-Reply-To: <20231126021105.408573-1-e@80x24.org> References: <20231126021105.408573-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: Reset gets called on END{} anyways to workaround DBI lifetime problems, so there's no need to call it near exit. We'll also replace many calls to POSIX::_exit with the normal `exit'. This ensures END{} gets called since all of our destructors are fork-safe nowadays so POSIX::_exit is unnecessary. --- lib/PublicInbox/CodeSearchIdx.pm | 1 - lib/PublicInbox/Daemon.pm | 1 - lib/PublicInbox/IO.pm | 6 ++---- lib/PublicInbox/TestCommon.pm | 2 +- lib/PublicInbox/Watch.pm | 6 +++--- lib/PublicInbox/Xapcmd.pm | 6 +++--- 6 files changed, 9 insertions(+), 13 deletions(-) diff --git a/lib/PublicInbox/CodeSearchIdx.pm b/lib/PublicInbox/CodeSearchIdx.pm index 3764f13e..bb1d698b 100644 --- a/lib/PublicInbox/CodeSearchIdx.pm +++ b/lib/PublicInbox/CodeSearchIdx.pm @@ -1292,7 +1292,6 @@ sub cidx_run { # main entry point local @PublicInbox::DS::post_loop_do = (\&shards_active); PublicInbox::DS::event_loop($MY_SIG, $SIGSET); - PublicInbox::DS->Reset; $self->lock_release(!!$NCHANGE); show_json($self); } diff --git a/lib/PublicInbox/Daemon.pm b/lib/PublicInbox/Daemon.pm index f33f6f17..a2c1ed6e 100644 --- a/lib/PublicInbox/Daemon.pm +++ b/lib/PublicInbox/Daemon.pm @@ -703,7 +703,6 @@ sub run { local %POST_ACCEPT; daemon_loop(); - PublicInbox::DS->Reset; # ->DESTROY runs when $for_destroy goes out-of-scope } diff --git a/lib/PublicInbox/IO.pm b/lib/PublicInbox/IO.pm index 6593dcdf..5654f3b0 100644 --- a/lib/PublicInbox/IO.pm +++ b/lib/PublicInbox/IO.pm @@ -15,10 +15,8 @@ use Errno qw(EINTR EAGAIN); sub waitcb { # awaitpid callback my ($pid, $errref, $cb, @args) = @_; - $errref //= \my $workaround_await_pids_clobbered; - $$errref = $?; # sets .cerr for _close + $$errref = $? if $errref; # sets .cerr for _close $cb->($pid, @args) if $cb; # may clobber $? - $? = $$errref; } sub attach_pid { @@ -52,7 +50,7 @@ sub close { } else { # wait synchronously my $w = awaitpid($reap->[1]); } - $? ? '' : $ret; # use $?, AWAIT_PIDS may be cleared on ->Reset (FIXME?) + $? ? '' : $ret; } sub DESTROY { diff --git a/lib/PublicInbox/TestCommon.pm b/lib/PublicInbox/TestCommon.pm index 361a2356..9595da1a 100644 --- a/lib/PublicInbox/TestCommon.pm +++ b/lib/PublicInbox/TestCommon.pm @@ -579,7 +579,7 @@ sub start_script { undef $tmp_mask; if ($sub) { _run_sub($sub, $key, \@argv); - POSIX::_exit($? >> 8); + exit($? >> 8); } else { exec(key2script($key), @argv); die "FAIL: ",join(' ', $key, @argv), ": $!\n"; diff --git a/lib/PublicInbox/Watch.pm b/lib/PublicInbox/Watch.pm index b83a77eb..bef8187c 100644 --- a/lib/PublicInbox/Watch.pm +++ b/lib/PublicInbox/Watch.pm @@ -15,7 +15,7 @@ use PublicInbox::Spamcheck; use PublicInbox::DS qw(now add_timer awaitpid); use PublicInbox::MID qw(mids); use PublicInbox::ContentHash qw(content_hash); -use POSIX qw(_exit WNOHANG); +use POSIX qw(WNOHANG); sub compile_watchheaders ($) { my ($ibx) = @_; @@ -418,7 +418,7 @@ sub imap_idle_fork { if ($pid == 0) { watch_atfork_child($self); watch_imap_idle_1($self, $uri, $intvl); - _exit(0); + exit(0); } $self->{pids}->{$pid} = undef; awaitpid($pid, \&imap_idle_reap, $self, $uri, $intvl); @@ -480,7 +480,7 @@ sub poll_fetch_fork { # DS::add_timer callback watch_atfork_child($self); watch_imap_fetch_all($self, \@imap) if @imap; watch_nntp_fetch_all($self, \@nntp) if @nntp; - _exit(0); + exit(0); } $self->{pids}->{$pid} = undef; awaitpid($pid, \&poll_fetch_reap, $self, $intvl, $uris); diff --git a/lib/PublicInbox/Xapcmd.pm b/lib/PublicInbox/Xapcmd.pm index 69f0af43..dd0fe6c5 100644 --- a/lib/PublicInbox/Xapcmd.pm +++ b/lib/PublicInbox/Xapcmd.pm @@ -10,7 +10,7 @@ use PublicInbox::Search qw(xap_terms); use PublicInbox::SearchIdx; use File::Temp 0.19 (); # ->newdir use File::Path qw(remove_tree); -use POSIX qw(WNOHANG _exit); +use POSIX qw(WNOHANG); use PublicInbox::DS; # support testing with dev versions of Xapian which installs @@ -105,9 +105,9 @@ sub cb_spawn { my ($cb, $args, $opt) = @_; # $cb = cpdb() or compact() my $pid = PublicInbox::DS::do_fork; return $pid if $pid > 0; - $SIG{__DIE__} = sub { warn @_; _exit(1) }; # don't jump up stack + $SIG{__DIE__} = sub { warn @_; exit(1) }; # don't jump up stack $cb->($args, $opt); - _exit(0); + exit(0); } sub runnable_or_die ($) {