diff options
author | Eric Wong (Contractor, The Linux Foundation) <e@80x24.org> | 2018-03-19 08:14:53 +0000 |
---|---|---|
committer | Eric Wong (Contractor, The Linux Foundation) <e@80x24.org> | 2018-03-19 08:16:34 +0000 |
commit | 0514c910b0a33fe758cd92fd89fa79a3291bf5fc (patch) | |
tree | 8e8e8c070085c527329a56f1358788594e3bc373 | |
parent | 82bd094dc2e2da6067fc089e37d538c171732e60 (diff) | |
download | public-inbox-0514c910b0a33fe758cd92fd89fa79a3291bf5fc.tar.gz |
v2writable: ensure ->done is idempotent
This matches Import::done behavior
-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(); |