diff options
-rw-r--r-- | lib/PublicInbox/V2Writable.pm | 3 | ||||
-rw-r--r-- | t/v2writable.t | 2 |
2 files changed, 4 insertions, 1 deletions
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(); |