]> Sergey Matveev's repositories - public-inbox.git/commitdiff
v2writable: ensure ->done is idempotent
authorEric Wong (Contractor, The Linux Foundation) <e@80x24.org>
Mon, 19 Mar 2018 08:14:53 +0000 (08:14 +0000)
committerEric Wong (Contractor, The Linux Foundation) <e@80x24.org>
Mon, 19 Mar 2018 08:16:34 +0000 (08:16 +0000)
This matches Import::done behavior

lib/PublicInbox/V2Writable.pm
t/v2writable.t

index 36901cdea0c33e69dd538f70f7f0acd40932eb4f..5c104d8ec27df12fa93528834f3d396e401e0691 100644 (file)
@@ -249,10 +249,11 @@ sub remove {
 
 sub done {
        my ($self) = @_;
+       my $locked = defined $self->{idx_parts};
        my $im = delete $self->{im};
        $im->done if $im; # PublicInbox::Import::done
        $self->searchidx_checkpoint(0);
-       $self->lock_release;
+       $self->lock_release if $locked;
 }
 
 sub checkpoint {
index 5245a84b1fbcfaea56bfa63c1fe7e7c14b60298c..771e8c1722efe7df3aa114ed144228c5bee89aa8 100644 (file)
@@ -223,6 +223,8 @@ EOF
        $im->done;
        is($git0->qx(qw(log -1 --pretty=raw --raw -r --no-abbrev)),
                $after, 'no git history made with idempotent remove');
+       eval { $im->done };
+       ok(!$@, '->done is idempotent');
 }
 
 done_testing();