]> git.donarmstrong.com Git - debbugs.git/commitdiff
wrap forcemerge changes in eval to properly unlock bugs after failure
authorDon Armstrong <don@donarmstrong.com>
Mon, 4 Dec 2017 22:05:37 +0000 (14:05 -0800)
committerDon Armstrong <don@donarmstrong.com>
Mon, 4 Dec 2017 22:05:37 +0000 (14:05 -0800)
Debbugs/Control.pm

index 20f82dfc2741e1d527b89cb330dcbb2dc0a13b6c..32239afbf7426b221a802d32d6331b202bdf4923 100644 (file)
@@ -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],