Skip to content

Commit

Permalink
Fix wrong migration for email address (#27106)
Browse files Browse the repository at this point in the history
On Iterate, `sess` should not be used in the closure function body.

Caused by #26952
  • Loading branch information
lunny authored Sep 17, 2023
1 parent ea83c06 commit dcf4b9e
Showing 1 changed file with 70 additions and 18 deletions.
88 changes: 70 additions & 18 deletions models/migrations/v1_21/v276.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,45 @@ func migratePullMirrors(x *xorm.Engine) error {
return err
}

if err := sess.Iterate(new(Mirror), func(_ int, bean any) error {
m := bean.(*Mirror)
remoteAddress, err := getRemoteAddress(sess, m.RepoID, "origin")
if err != nil {
limit := setting.Database.IterateBufferSize
if limit <= 0 {
limit = 50
}

start := 0

for {
var mirrors []Mirror
if err := sess.Limit(limit, start).Find(&mirrors); err != nil {
return err
}

m.RemoteAddress = remoteAddress
if len(mirrors) == 0 {
break
}
start += len(mirrors)

_, err = sess.ID(m.ID).Cols("remote_address").Update(m)
return err
}); err != nil {
return err
for _, m := range mirrors {
remoteAddress, err := getRemoteAddress(sess, m.RepoID, "origin")
if err != nil {
return err
}

m.RemoteAddress = remoteAddress

if _, err = sess.ID(m.ID).Cols("remote_address").Update(m); err != nil {
return err
}
}

if start%1000 == 0 { // avoid a too big transaction
if err := sess.Commit(); err != nil {
return err
}
if err := sess.Begin(); err != nil {
return err
}
}
}

return sess.Commit()
Expand All @@ -83,19 +109,45 @@ func migratePushMirrors(x *xorm.Engine) error {
return err
}

if err := sess.Iterate(new(PushMirror), func(_ int, bean any) error {
m := bean.(*PushMirror)
remoteAddress, err := getRemoteAddress(sess, m.RepoID, m.RemoteName)
if err != nil {
limit := setting.Database.IterateBufferSize
if limit <= 0 {
limit = 50
}

start := 0

for {
var mirrors []PushMirror
if err := sess.Limit(limit, start).Find(&mirrors); err != nil {
return err
}

m.RemoteAddress = remoteAddress
if len(mirrors) == 0 {
break
}
start += len(mirrors)

_, err = sess.ID(m.ID).Cols("remote_address").Update(m)
return err
}); err != nil {
return err
for _, m := range mirrors {
remoteAddress, err := getRemoteAddress(sess, m.RepoID, m.RemoteName)
if err != nil {
return err
}

m.RemoteAddress = remoteAddress

if _, err = sess.ID(m.ID).Cols("remote_address").Update(m); err != nil {
return err
}
}

if start%1000 == 0 { // avoid a too big transaction
if err := sess.Commit(); err != nil {
return err
}
if err := sess.Begin(); err != nil {
return err
}
}
}

return sess.Commit()
Expand Down

0 comments on commit dcf4b9e

Please sign in to comment.