From 8a615efb55a87343bc3e059c4e966847f29987e4 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Mon, 4 Dec 2017 14:05:37 -0800 Subject: [PATCH] wrap forcemerge changes in eval to properly unlock bugs after failure --- Debbugs/Control.pm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Debbugs/Control.pm b/Debbugs/Control.pm index 20f82df..32239af 100644 --- a/Debbugs/Control.pm +++ b/Debbugs/Control.pm @@ -2089,6 +2089,7 @@ sub set_merged { $param{show_bug_info} and not __internal_request(1); $bug_info_shown{$change_bug} = 1; __allow_relocking($param{locks},[keys %data]); + eval { for my $change (@{$changes->{$change_bug}}) { if ($change->{field} eq 'blockedby' or $change->{field} eq 'blocks') { my %target_blockedby; @@ -2125,6 +2126,12 @@ sub set_merged { ); } } + }; + if ($@) { + __disallow_relocking($param{locks}); + __end_control(%info); + croak "Failure while trying to adjust bugs, please report this as a bug: $@"; + } __disallow_relocking($param{locks}); my ($data,$n_locks) = __lock_and_load_merged_bugs(bugs_to_load => [keys %merging], -- 2.39.2