]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Gcf2Client.pm
git|gcf2: switch to awaitpid
[public-inbox.git] / lib / PublicInbox / Gcf2Client.pm
index c5695db140cd6cd6728e964c0ba2abaae5bb59ab..a49e2aad380129ce2fc8c3b1c5b7d267d8c8aed4 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2020-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 
 # 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
@@ -18,7 +19,7 @@ use PublicInbox::Syscall qw(EPOLLIN EPOLLET);
 #      pid.owner => process which spawned {pid}
 #      in => same as {sock}, for compatibility with PublicInbox::Git
 #      inflight => array (see PublicInbox::Git)
-#      cat_rbuf => scalarref, may be non-existent or empty
+#      rbuf => scalarref, may be non-existent or empty
 sub new  {
        my ($rdr) = @_;
        my $self = bless {}, __PACKAGE__;
@@ -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;
@@ -68,7 +69,7 @@ sub event_step {
                return $self->close unless $self->{in}; # process died
 
                # ok, more to do, requeue for fairness
-               $self->requeue if @$inflight || exists($self->{cat_rbuf});
+               $self->requeue if @$inflight || exists($self->{rbuf});
        }
 }