From: Eric Wong (Contractor, The Linux Foundation) Date: Mon, 19 Mar 2018 08:14:53 +0000 (+0000) Subject: v2writable: ensure ->done is idempotent X-Git-Tag: v1.1.0-pre1~149 X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=commitdiff_plain;h=0514c910b0a33fe758cd92fd89fa79a3291bf5fc v2writable: ensure ->done is idempotent This matches Import::done behavior --- diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm index 36901cde..5c104d8e 100644 --- a/lib/PublicInbox/V2Writable.pm +++ b/lib/PublicInbox/V2Writable.pm @@ -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 { diff --git a/t/v2writable.t b/t/v2writable.t index 5245a84b..771e8c17 100644 --- a/t/v2writable.t +++ b/t/v2writable.t @@ -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();