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,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF 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 1D9761FA2E for ; Tue, 17 Jan 2023 07:19:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1673939952; bh=8xKGF/ki85cfQjQIY53LbqMQx6FvScvTiUSdql1vNUI=; h=From:To:Subject:Date:In-Reply-To:References:From; b=PoV7mDjhKHFlBqdFaGV2XeAXLoxDw7VTUF+M/Zs6y4qBBM8hgN/hqJzk8XAFiC8Zj 7MqFZspuJ8EjkOC+XUv4xGwm+C+YZmnDQUlzkUJliUiqbUTjGxXRajI5cXLYKggK5X S4SVTO/MMbWTNsYCxLrb20+YzXa7DVpE1Vro/eio= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 05/12] git|gcf2: switch to awaitpid Date: Tue, 17 Jan 2023 07:19:04 +0000 Message-Id: <20230117071911.1577890-6-e@80x24.org> In-Reply-To: <20230117071911.1577890-1-e@80x24.org> References: <20230117071911.1577890-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: This is a trivial change compared to Qspawn in the previous commit. --- lib/PublicInbox/Gcf2Client.pm | 5 +++-- lib/PublicInbox/Git.pm | 10 +++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/PublicInbox/Gcf2Client.pm b/lib/PublicInbox/Gcf2Client.pm index 09c3aa06..a49e2aad 100644 --- a/lib/PublicInbox/Gcf2Client.pm +++ b/lib/PublicInbox/Gcf2Client.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2020-2021 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ # connects public-inbox processes to PublicInbox::Gcf2::loop() @@ -10,6 +10,7 @@ use PublicInbox::Gcf2; # fails if Inline::C or libgit2-dev isn't available use PublicInbox::Spawn qw(spawn); use Socket qw(AF_UNIX SOCK_STREAM); use PublicInbox::Syscall qw(EPOLLIN EPOLLET); +use PublicInbox::DS qw(awaitpid); # fields: # sock => socket to Gcf2::loop # The rest of these fields are compatible with what PublicInbox::Git @@ -30,7 +31,7 @@ sub new { $rdr->{0} = $rdr->{1} = $s2; my $cmd = [$^X, qw[-MPublicInbox::Gcf2 -e PublicInbox::Gcf2::loop]]; $self->{'pid.owner'} = $$; - $self->{pid} = spawn($cmd, $env, $rdr); + awaitpid($self->{pid} = spawn($cmd, $env, $rdr), undef); $s1->blocking(0); $self->{inflight} = []; $self->{in} = $s1; diff --git a/lib/PublicInbox/Git.pm b/lib/PublicInbox/Git.pm index 96627daa..c9ed48be 100644 --- a/lib/PublicInbox/Git.pm +++ b/lib/PublicInbox/Git.pm @@ -21,7 +21,7 @@ use PublicInbox::Tmpfile; use IO::Poll qw(POLLIN); use Carp qw(croak carp); use Digest::SHA (); -use PublicInbox::DS qw(dwaitpid); +use PublicInbox::DS qw(awaitpid); our @EXPORT_OK = qw(git_unquote git_quote); our $PIPE_BUFSIZ = 65536; # Linux default our $in_cleanup; @@ -138,7 +138,7 @@ sub _bidi_pipe { $rdr->{2} = $fh; } my ($in_r, $p) = popen_rd(\@cmd, undef, $rdr); - $self->{$pid} = $p; + awaitpid($self->{$pid} = $p, undef); $self->{"$pid.owner"} = $$; $out_w->autoflush(1); if ($^O eq 'linux') { # 1031: F_SETPIPE_SZ @@ -357,9 +357,9 @@ sub _destroy { delete @$self{($rbuf, $in, $out)}; delete $self->{$err} if $err; # `err_c' - # GitAsyncCat::event_step may delete {pid} - my $p = delete $self->{$pid} or return; - dwaitpid($p) if $$ == $self->{"$pid.owner"}; + # GitAsyncCat::event_step may delete {$pid} + my $p = delete($self->{$pid}) // return; + awaitpid($p) if $$ == $self->{"$pid.owner"}; } sub async_abort ($) {