From a82c3ceb838e8bb478440263790c28ebae6ec9cd Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 15 Mar 2021 12:58:04 +0100 Subject: t/convert-compact: create_inbox Suprisingly, this saves over 100 milliseconds. --- lib/PublicInbox/TestCommon.pm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/PublicInbox/TestCommon.pm b/lib/PublicInbox/TestCommon.pm index 6ca69174..c2d07e59 100644 --- a/lib/PublicInbox/TestCommon.pm +++ b/lib/PublicInbox/TestCommon.pm @@ -593,13 +593,17 @@ sub create_inbox ($$;@) { require PublicInbox::InboxWritable; my ($base) = ($0 =~ m!\b([^/]+)\.[^\.]+\z!); my $dir = "t/data-gen/$base.$ident"; - unless (-d $dir) { + my $new = !-d $dir; + if ($new) { mkdir $dir; # may race -d $dir or BAIL_OUT "$dir could not be created: $!"; } my $lk = bless { lock_path => "$dir/creat.lock" }, 'PublicInbox::Lock'; $opt{inboxdir} = File::Spec->rel2abs($dir); $opt{name} //= $ident; + my $scope = $lk->lock_for_scope; + my $pre_cb = delete $opt{pre_cb}; + $pre_cb->($dir) if $pre_cb && $new; $opt{-no_fsync} = 1; my $no_gc = delete $opt{-no_gc}; my $tmpdir = delete $opt{tmpdir}; @@ -608,7 +612,6 @@ sub create_inbox ($$;@) { my $parallel = delete($opt{importer_parallel}) // 0; my $creat_opt = { nproc => delete($opt{nproc}) // 1 }; my $ibx = PublicInbox::InboxWritable->new({ %opt }, $creat_opt); - my $scope = $lk->lock_for_scope; if (!-f "$dir/creat.stamp") { my $im = $ibx->importer($parallel); $cb->($im, $ibx); -- cgit v1.2.3-24-ge0c7