]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/V2Writable.pm
treewide: shorten temporary filename
[public-inbox.git] / lib / PublicInbox / V2Writable.pm
index 7f9342b08d36941d1784615739f300ebf532542f..0461257feb7b483329d09f4b0e5e75f9b5913b0d 100644 (file)
@@ -8,6 +8,7 @@ use strict;
 use v5.10.1;
 use parent qw(PublicInbox::Lock);
 use PublicInbox::SearchIdxShard;
+use PublicInbox::IPC;
 use PublicInbox::Eml;
 use PublicInbox::Git;
 use PublicInbox::Import;
@@ -21,6 +22,7 @@ use PublicInbox::Search;
 use PublicInbox::SearchIdx qw(log2stack is_ancestor check_size is_bad_blob);
 use IO::Handle; # ->autoflush
 use File::Temp ();
+use POSIX ();
 
 my $OID = qr/[a-f0-9]{40,}/;
 # an estimate of the post-packed size to the raw uncompressed size
@@ -34,27 +36,13 @@ our $PACKING_FACTOR = 0.4;
 # to increase Xapian shards
 our $NPROC_MAX_DEFAULT = 4;
 
-sub detect_nproc () {
-       # getconf(1) is POSIX, but *NPROCESSORS* vars are not
-       for (qw(_NPROCESSORS_ONLN NPROCESSORS_ONLN)) {
-               `getconf $_ 2>/dev/null` =~ /^(\d+)$/ and return $1;
-       }
-       for my $nproc (qw(nproc gnproc)) { # GNU coreutils nproc
-               `$nproc 2>/dev/null` =~ /^(\d+)$/ and return $1;
-       }
-
-       # should we bother with `sysctl hw.ncpu`?  Those only give
-       # us total processor count, not online processor count.
-       undef
-}
-
 sub nproc_shards ($) {
        my ($creat_opt) = @_;
        my $n = $creat_opt->{nproc} if ref($creat_opt) eq 'HASH';
        $n //= $ENV{NPROC};
        if (!$n) {
                # assume 2 cores if not detectable or zero
-               state $NPROC_DETECTED = detect_nproc() || 2;
+               state $NPROC_DETECTED = PublicInbox::IPC::detect_nproc() || 2;
                $n = $NPROC_DETECTED;
                $n = $NPROC_MAX_DEFAULT if $n > $NPROC_MAX_DEFAULT;
        }
@@ -672,7 +660,7 @@ sub done {
 
 sub write_alternates ($$$) {
        my ($info_dir, $mode, $out) = @_;
-       my $fh = File::Temp->new(TEMPLATE => 'alt-XXXXXXXX', DIR => $info_dir);
+       my $fh = File::Temp->new(TEMPLATE => 'alt-XXXX', DIR => $info_dir);
        my $tmp = $fh->filename;
        print $fh @$out or die "print $tmp: $!\n";
        chmod($mode, $fh) or die "fchmod $tmp: $!\n";
@@ -784,11 +772,11 @@ sub import_init {
 sub diff ($$$) {
        my ($mid, $cur, $new) = @_;
 
-       my $ah = File::Temp->new(TEMPLATE => 'email-cur-XXXXXXXX', TMPDIR => 1);
+       my $ah = File::Temp->new(TEMPLATE => 'email-cur-XXXX', TMPDIR => 1);
        print $ah $cur->as_string or die "print: $!";
        $ah->flush or die "flush: $!";
        PublicInbox::Import::drop_unwanted_headers($new);
-       my $bh = File::Temp->new(TEMPLATE => 'email-new-XXXXXXXX', TMPDIR => 1);
+       my $bh = File::Temp->new(TEMPLATE => 'email-new-XXXX', TMPDIR => 1);
        print $bh $new->as_string or die "print: $!";
        $bh->flush or die "flush: $!";
        my $cmd = [ qw(diff -u), $ah->filename, $bh->filename ];
@@ -1228,7 +1216,7 @@ sub sync_ranges ($$) {
 
 sub index_xap_only { # git->cat_async callback
        my ($bref, $oid, $type, $size, $smsg) = @_;
-       my $self = $smsg->{self};
+       my $self = delete $smsg->{self};
        my $idx = idx_shard($self, $smsg->{num});
        $idx->index_eml(PublicInbox::Eml->new($bref), $smsg);
        $self->{transact_bytes} += $smsg->{bytes};
@@ -1335,6 +1323,7 @@ sub xapian_only {
                }
        }
        $self->git->cat_async_wait;
+       $self->{ibx}->cleanup;
        $self->done;
 }