my $PACKING_FACTOR = 0.4;
# assume 2 cores if GNU nproc(1) is not available
-sub nproc_parts () {
+sub nproc_parts ($) {
+ my ($creat_opt) = @_;
+ if (ref($creat_opt) eq 'HASH') {
+ if (defined(my $n = $creat_opt->{nproc})) {
+ return $n
+ }
+ }
+
my $n = int($ENV{NPROC} || `nproc 2>/dev/null` || 2);
# subtract for the main process and git-fast-import
$n -= 1;
}
sub new {
+ # $creat may be any true value, or 0/undef. A hashref is true,
+ # and $creat->{nproc} may be set to an integer
my ($class, $v2ibx, $creat) = @_;
my $dir = $v2ibx->{mainrepo} or die "no mainrepo in inbox\n";
unless (-d $dir) {
rotate_bytes => int((1024 * 1024 * 1024) / $PACKING_FACTOR),
last_commit => [], # git repo -> commit
};
- $self->{partitions} = count_partitions($self) || nproc_parts();
+ $self->{partitions} = count_partitions($self) || nproc_parts($creat);
bless $self, $class;
}
eval { require PublicInbox::V2Writable };
die "v2 requirements not met: $@\n" if $@;
my $v2w = eval {
- $jobs and local $ENV{NPROC} = $jobs;
- PublicInbox::V2Writable->new($repo);
+ PublicInbox::V2Writable->new($repo, {nproc=>$jobs});
};
if (defined $jobs) {
if ($jobs == 0) {
EOF
-local $ENV{NPROC} = '1';
my $cfgfile = "$tmpdir/config";
local $ENV{PI_CONFIG} = $cfgfile;
open my $cfg_fh, '>', $cfgfile or die "open: $!";
-my $v2w = PublicInbox::V2Writable->new($ibx, 1);
+my $v2w = PublicInbox::V2Writable->new($ibx, {nproc => 1});
my $mime = PublicInbox::MIME->new($raw);
ok($v2w->add($mime), 'add message to be purged');
$v2w->done;
],
body => $agpl,
);
-local $ENV{NPROC} = 2;
my $minmax;
my $msgmap;
my ($mark1, $mark2, $mark3, $mark4);
{
my %config = %$ibx_config;
my $ibx = PublicInbox::Inbox->new(\%config);
- my $im = PublicInbox::V2Writable->new($ibx, 1);
+ my $im = PublicInbox::V2Writable->new($ibx, {nproc => 1});
my $im0 = $im->importer();
foreach my $i (1..10) {
$mime->header_set('Message-Id', "<$i\@example.com>");
body => "hello world\n",
);
-my $im = eval {
- local $ENV{NPROC} = '1';
- PublicInbox::V2Writable->new($ibx, 1);
-};
+my $im = PublicInbox::V2Writable->new($ibx, {nproc => 1});
is($im->{partitions}, 1, 'one partition when forced');
ok($im->add($mime), 'ordinary message added');
foreach my $f ("$mainrepo/msgmap.sqlite3",
is_deeply([sort keys %lg], [sort keys %$rover], 'XROVER range OK');
};
{
- local $ENV{NPROC} = 2;
my @log = qw(log --no-decorate --no-abbrev --no-notes --no-color);
my @before = $git0->qx(@log, qw(--pretty=oneline));
my $before = $git0->qx(@log, qw(--pretty=raw --raw -r));
- $im = PublicInbox::V2Writable->new($ibx, 1);
+ $im = PublicInbox::V2Writable->new($ibx, {nproc => 2});
is($im->{partitions}, 1, 'detected single partition from previous');
my $smsg = $im->remove($mime, 'test removal');
$im->done;