diff options
author | Eric Wong <e@80x24.org> | 2021-02-07 08:51:50 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2021-02-07 22:57:01 +0000 |
commit | e076ce0dc6094216e16451b7e69322a8c06ce935 (patch) | |
tree | d4c6b2fb7139f5d20b117e4eb6f5aff2bf6c2c49 /lib | |
parent | 10e6d3b7dca7e32f1af38a734800e36e7c354654 (diff) | |
download | public-inbox-e076ce0dc6094216e16451b7e69322a8c06ce935.tar.gz |
Make some notes about sub usage, this may be converted to use workqueues once the cmsg dependency is dropped.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/PublicInbox/Xapcmd.pm | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/PublicInbox/Xapcmd.pm b/lib/PublicInbox/Xapcmd.pm index 269aa99a..e2d67f6a 100644 --- a/lib/PublicInbox/Xapcmd.pm +++ b/lib/PublicInbox/Xapcmd.pm @@ -9,7 +9,7 @@ use PublicInbox::SearchIdx; use File::Temp 0.19 (); # ->newdir use File::Path qw(remove_tree); use File::Basename qw(dirname); -use POSIX qw(WNOHANG); +use POSIX qw(WNOHANG _exit); # support testing with dev versions of Xapian which installs # commands with a version number suffix (e.g. "xapian-compact-1.5") @@ -93,8 +93,9 @@ sub cb_spawn { my $pid = fork // die "fork: $!"; return $pid if $pid > 0; srand($seed); + $SIG{__DIE__} = sub { warn @_; _exit(1) }; # don't jump up stack $cb->($args, $opt); - POSIX::_exit(0); + _exit(0); } sub runnable_or_die ($) { @@ -237,7 +238,7 @@ sub prepare_run { sub check_compact () { runnable_or_die($XAPIAN_COMPACT) } -sub _run { +sub _run { # with_umask callback my ($ibx, $cb, $opt) = @_; my $im = $ibx->importer(0); $im->lock_acquire; @@ -303,7 +304,7 @@ sub kill_compact { # setup_signals callback } # xapian-compact wrapper -sub compact ($$) { +sub compact ($$) { # cb_spawn callback my ($args, $opt) = @_; my ($src, $newdir) = @$args; my $dst = ref($newdir) ? $newdir->dirname : $newdir; @@ -384,7 +385,7 @@ sub cpdb_loop ($$$;$$) { # Like copydatabase(1), this is horribly slow; and it doesn't seem due # to the overhead of Perl. -sub cpdb ($$) { +sub cpdb ($$) { # cb_spawn callback my ($args, $opt) = @_; my ($old, $newdir) = @$args; my $new = $newdir->dirname; |