Skip to content

Commit 6590cac

Browse files
authored
Fix bug on migration 111 (#12736)
* Fix bug on migration 111 * Check reviews when migrating v111 * Fix bug * Fix commit
1 parent 1c35353 commit 6590cac

File tree

1 file changed

+32
-12
lines changed

1 file changed

+32
-12
lines changed

models/migrations/v111.go

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -357,21 +357,18 @@ func addBranchProtectionCanPushAndEnableWhitelist(x *xorm.Engine) error {
357357
return sess.Where("uid=?", reviewer.ID).In("team_id", protectedBranch.ApprovalsWhitelistTeamIDs).Exist(new(TeamUser))
358358
}
359359

360-
sess := x.NewSession()
361-
defer sess.Close()
362-
363-
if _, err := sess.Exec("UPDATE `protected_branch` SET `enable_whitelist` = ? WHERE enable_whitelist IS NULL", false); err != nil {
360+
if _, err := x.Exec("UPDATE `protected_branch` SET `enable_whitelist` = ? WHERE enable_whitelist IS NULL", false); err != nil {
364361
return err
365362
}
366-
if _, err := sess.Exec("UPDATE `protected_branch` SET `can_push` = `enable_whitelist`"); err != nil {
363+
if _, err := x.Exec("UPDATE `protected_branch` SET `can_push` = `enable_whitelist`"); err != nil {
367364
return err
368365
}
369-
if _, err := sess.Exec("UPDATE `protected_branch` SET `enable_approvals_whitelist` = ? WHERE `required_approvals` > ?", true, 0); err != nil {
366+
if _, err := x.Exec("UPDATE `protected_branch` SET `enable_approvals_whitelist` = ? WHERE `required_approvals` > ?", true, 0); err != nil {
370367
return err
371368
}
372369

373370
var pageSize int64 = 20
374-
qresult, err := sess.QueryInterface("SELECT max(id) as max_id FROM issue")
371+
qresult, err := x.QueryInterface("SELECT max(id) as max_id FROM issue")
375372
if err != nil {
376373
return err
377374
}
@@ -385,14 +382,26 @@ func addBranchProtectionCanPushAndEnableWhitelist(x *xorm.Engine) error {
385382

386383
// Find latest review of each user in each pull request, and set official field if appropriate
387384
reviews := []*Review{}
388-
var page int64
389-
for page = 0; page <= totalPages; page++ {
390-
if err := sess.SQL("SELECT * FROM review WHERE id IN (SELECT max(id) as id FROM review WHERE issue_id > ? AND issue_id <= ? AND type in (?, ?) GROUP BY issue_id, reviewer_id)",
385+
386+
var executeBody = func(page, pageSize int64) error {
387+
if err := x.SQL("SELECT * FROM review WHERE id IN (SELECT max(id) as id FROM review WHERE issue_id > ? AND issue_id <= ? AND type in (?, ?) GROUP BY issue_id, reviewer_id)",
391388
page*pageSize, (page+1)*pageSize, ReviewTypeApprove, ReviewTypeReject).
392389
Find(&reviews); err != nil {
393390
return err
394391
}
395392

393+
if len(reviews) == 0 {
394+
return nil
395+
}
396+
397+
sess := x.NewSession()
398+
defer sess.Close()
399+
400+
if err := sess.Begin(); err != nil {
401+
return err
402+
}
403+
404+
var updated int
396405
for _, review := range reviews {
397406
reviewer := new(User)
398407
has, err := sess.ID(review.ReviewerID).Get(reviewer)
@@ -407,13 +416,24 @@ func addBranchProtectionCanPushAndEnableWhitelist(x *xorm.Engine) error {
407416
continue
408417
}
409418
review.Official = official
410-
419+
updated++
411420
if _, err := sess.ID(review.ID).Cols("official").Update(review); err != nil {
412421
return err
413422
}
414423
}
415424

425+
if updated > 0 {
426+
return sess.Commit()
427+
}
428+
return nil
429+
}
430+
431+
var page int64
432+
for page = 0; page <= totalPages; page++ {
433+
if err := executeBody(page, pageSize); err != nil {
434+
return err
435+
}
416436
}
417437

418-
return sess.Commit()
438+
return nil
419439
}

0 commit comments

Comments
 (0)