From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.0 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id EAA801FAFC for ; Tue, 6 Mar 2018 08:42:43 +0000 (UTC) From: "Eric Wong (Contractor, The Linux Foundation)" To: meta@public-inbox.org Subject: [PATCH 25/34] import: consolidate object info for v2 imports Date: Tue, 6 Mar 2018 08:42:33 +0000 Message-Id: <20180306084242.19988-26-e@80x24.org> In-Reply-To: <20180306084242.19988-1-e@80x24.org> References: <20180306084242.19988-1-e@80x24.org> List-Id: It's easier to store everything in one array ref similar to what our Git->check routine returns --- lib/PublicInbox/Import.pm | 6 +++--- lib/PublicInbox/V2Writable.pm | 5 ++--- t/import.t | 9 ++++++--- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/PublicInbox/Import.pm b/lib/PublicInbox/Import.pm index ac46c0c..ddb63b1 100644 --- a/lib/PublicInbox/Import.pm +++ b/lib/PublicInbox/Import.pm @@ -282,9 +282,9 @@ sub add { print $w $str, "\n" or wfail; # v2: we need this for Xapian - if ($self->{want_object_id}) { - chomp($self->{last_object_id} = $self->get_mark(":$blob")); - $self->{last_object} = [ $n, \$str ]; + if ($self->{want_object_info}) { + chomp(my $oid = $self->get_mark(":$blob")); + $self->{last_object} = [ $oid, $n, \$str ]; } my $ref = $self->{ref}; my $commit = $self->{mark}++; diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm index caabc8e..31376db 100644 --- a/lib/PublicInbox/V2Writable.pm +++ b/lib/PublicInbox/V2Writable.pm @@ -69,8 +69,7 @@ sub add { my $im = $self->importer; my $cmt = $im->add($mime); $cmt = $im->get_mark($cmt); - my $oid = $im->{last_object_id}; - my ($len, $msgref) = @{$im->{last_object}}; + my ($oid, $len, $msgref) = @{$im->{last_object}}; my $nparts = $self->{partitions}; my $part = $num % $nparts; @@ -318,7 +317,7 @@ sub import_init { my ($self, $git, $packed_bytes) = @_; my $im = PublicInbox::Import->new($git, undef, undef, $self->{-inbox}); $im->{bytes_added} = int($packed_bytes / $PACKING_FACTOR); - $im->{want_object_id} = 1; + $im->{want_object_info} = 1; $im->{ssoma_lock} = 0; $im->{path_type} = 'v2'; $self->{im} = $im; diff --git a/t/import.t b/t/import.t index ca59772..eee4744 100644 --- a/t/import.t +++ b/t/import.t @@ -28,11 +28,14 @@ my $mime = PublicInbox::MIME->create( body => "hello world\n", ); -$im->{want_object_id} = 1 if 'v2'; +$im->{want_object_info} = 1 if 'v2'; like($im->add($mime), qr/\A:\d+\z/, 'added one message'); if ('v2') { - like($im->{last_object_id}, qr/\A[a-f0-9]{40}\z/, 'got last_object_id'); + my $info = $im->{last_object}; + like($info->[0], qr/\A[a-f0-9]{40}\z/, 'got last object_id'); + is($mime->as_string, ${$info->[2]}, 'string matches'); + is($info->[1], length(${$info->[2]}), 'length matches'); my @cmd = ('git', "--git-dir=$git->{git_dir}", qw(hash-object --stdin)); my $in = tempfile(); print $in $mime->as_string or die "write failed: $!"; @@ -44,7 +47,7 @@ if ('v2') { is($?, 0, 'hash-object'); $out->seek(0, SEEK_SET); chomp(my $hashed_obj = <$out>); - is($hashed_obj, $im->{last_object_id}, "last_object_id matches exp"); + is($hashed_obj, $info->[0], "last object_id matches exp"); } $im->done; -- EW