From: Eric Wong Date: Sun, 10 Jan 2021 12:15:03 +0000 (+0000) Subject: ipc: avoid excessive evals X-Git-Tag: v1.7.0~1393 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=9fd84b74b80eb98855d57f438e88ba9285b3d9a6;p=public-inbox.git ipc: avoid excessive evals We should not need an eval for warning with our code base. Nowadays, dwaitpid() automatically does the right thing regardless of whether we're in the event loop, so no eval is needed there, either. --- diff --git a/lib/PublicInbox/IPC.pm b/lib/PublicInbox/IPC.pm index 7dc8ec6a..5082f110 100644 --- a/lib/PublicInbox/IPC.pm +++ b/lib/PublicInbox/IPC.pm @@ -69,7 +69,7 @@ sub ipc_worker_loop ($$$) { # this is the overwhelmingly likely case if (!defined($wantarray)) { eval { $self->$sub(@args) }; - eval { warn "$$ die: $@ (from nowait $sub)\n" } if $@; + warn "$$ die: $@ (from nowait $sub)\n" if $@; } elsif ($wantarray) { my @ret = eval { $self->$sub(@args) }; ipc_return($w_res, \@ret, $@); @@ -144,15 +144,7 @@ sub ipc_worker_stop { # allow any sibling to send ipc_worker_exit, but siblings can't wait return if $$ != $ppid; - eval { - my $reap = $self->can('ipc_worker_reap'); - PublicInbox::DS::dwaitpid($pid, $reap, $self); - }; - if ($@) { - my $wp = waitpid($pid, 0); - $pid == $wp or die "waitpid($pid) returned $wp: \$?=$?"; - $self->ipc_worker_reap($pid); - } + PublicInbox::DS::dwaitpid($pid, \&ipc_worker_reap, $self); } # use this if we have multiple readers reading curl or "pigz -dc"