Skip to content

Commit 9899989

Browse files
authored
Add missing transaction when set merge (#33113)
backport from #33079 `SetMerged` should be in a database transaction otherwise it's possible to have dirty data.
1 parent 0fad40d commit 9899989

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

services/pull/check.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -301,11 +301,16 @@ func manuallyMerged(ctx context.Context, pr *issues_model.PullRequest) bool {
301301
pr.Merger = merger
302302
pr.MergerID = merger.ID
303303

304-
if merged, err := pr.SetMerged(ctx); err != nil {
304+
if err := db.WithTx(ctx, func(ctx context.Context) error {
305+
if merged, err := pr.SetMerged(ctx); err != nil {
306+
return err
307+
} else if !merged {
308+
return errors.New("setMerged failed")
309+
}
310+
return nil
311+
}); err != nil {
305312
log.Error("%-v setMerged : %v", pr, err)
306313
return false
307-
} else if !merged {
308-
return false
309314
}
310315

311316
notify_service.MergePullRequest(ctx, merger, pr)

0 commit comments

Comments
 (0)