X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FLeiMirror.pm;h=e20d30b48546fc9c1344d78b9d699858af4db0a6;hb=23af251dd607c4e75ab1e68063f2c885c48cc035;hp=1369c00c57fde351cdf7a910dc166b6024d92786;hpb=896c59c925e61caf5d985e8531a35825eeecc99d;p=public-inbox.git diff --git a/lib/PublicInbox/LeiMirror.pm b/lib/PublicInbox/LeiMirror.pm index 1369c00c..e20d30b4 100644 --- a/lib/PublicInbox/LeiMirror.pm +++ b/lib/PublicInbox/LeiMirror.pm @@ -7,9 +7,10 @@ use strict; use v5.10.1; use parent qw(PublicInbox::IPC); use PublicInbox::Config; +use PublicInbox::AutoReap; use IO::Uncompress::Gunzip qw(gunzip $GunzipError); use IO::Compress::Gzip qw(gzip $GzipError); -use PublicInbox::Spawn qw(popen_rd spawn run_die); +use PublicInbox::Spawn qw(popen_rd spawn); use File::Temp (); use Fcntl qw(SEEK_SET O_CREAT O_EXCL O_WRONLY); use Carp qw(croak); @@ -192,11 +193,8 @@ sub index_cloned_inbox { sub run_reap { my ($lei, $cmd, $opt) = @_; $lei->qerr("# @$cmd"); - $opt->{pgid} = 0 if $lei->{sock}; - my $pid = spawn($cmd, undef, $opt); - my $reap = PublicInbox::OnDestroy->new($lei->can('sigint_reap'), $pid); - waitpid($pid, 0) == $pid or die "waitpid @$cmd: $!"; - @$reap = (); # cancel reap + my $ar = PublicInbox::AutoReap->new(spawn($cmd, undef, $opt)); + $ar->join; my $ret = $?; $? = 0; # don't let it influence normal exit $ret; @@ -424,6 +422,7 @@ sub start_clone_url { sub do_mirror { # via wq_io_do my ($self) = @_; my $lei = $self->{lei}; + umask($lei->{client_umask}) if defined $lei->{client_umask}; eval { my $iv = $lei->{opt}->{'inbox-version'}; if (defined $iv) { @@ -448,17 +447,17 @@ sub start { require PublicInbox::Inbox; require PublicInbox::Admin; require PublicInbox::InboxWritable; + $lei->request_umask; my ($op_c, $ops) = $lei->workers_start($self, 1); $lei->{wq1} = $self; $self->wq_io_do('do_mirror', []); - $self->wq_close(1); + $self->wq_close; $lei->wait_wq_events($op_c, $ops); } sub ipc_atfork_child { my ($self) = @_; $self->{lei}->_lei_atfork_child; - $SIG{TERM} = sub { exit(128 + 15) }; # trigger OnDestroy $reap $self->SUPER::ipc_atfork_child; }