Skip to content

Commit 2026d88

Browse files
authored
Fix bug on migration 147 (#12565)
1 parent 7a8a05c commit 2026d88

File tree

1 file changed

+60
-38
lines changed

1 file changed

+60
-38
lines changed

models/migrations/v147.go

Lines changed: 60 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -82,51 +82,73 @@ func createReviewsForCodeComments(x *xorm.Engine) error {
8282
if err := x.Sync2(new(Review), new(Comment)); err != nil {
8383
return err
8484
}
85-
sess := x.NewSession()
86-
defer sess.Close()
87-
if err := sess.Begin(); err != nil {
88-
return err
89-
}
90-
if err := sess.Where("review_id = 0 and type = 21").Iterate(new(Comment), func(idx int, bean interface{}) error {
91-
comment := bean.(*Comment)
92-
93-
review := &Review{
94-
Type: ReviewTypeComment,
95-
ReviewerID: comment.PosterID,
96-
IssueID: comment.IssueID,
97-
Official: false,
98-
CommitID: comment.CommitSHA,
99-
Stale: comment.Invalidated,
100-
OriginalAuthor: comment.OriginalAuthor,
101-
OriginalAuthorID: comment.OriginalAuthorID,
102-
CreatedUnix: comment.CreatedUnix,
103-
UpdatedUnix: comment.CreatedUnix,
104-
}
105-
if _, err := sess.NoAutoTime().Insert(review); err != nil {
85+
86+
var updateComment = func(comments []*Comment) error {
87+
sess := x.NewSession()
88+
defer sess.Close()
89+
if err := sess.Begin(); err != nil {
10690
return err
10791
}
10892

109-
reviewComment := &Comment{
110-
Type: 22,
111-
PosterID: comment.PosterID,
112-
Content: "",
113-
IssueID: comment.IssueID,
114-
ReviewID: review.ID,
115-
OriginalAuthor: comment.OriginalAuthor,
116-
OriginalAuthorID: comment.OriginalAuthorID,
117-
CreatedUnix: comment.CreatedUnix,
118-
UpdatedUnix: comment.CreatedUnix,
93+
for _, comment := range comments {
94+
review := &Review{
95+
Type: ReviewTypeComment,
96+
ReviewerID: comment.PosterID,
97+
IssueID: comment.IssueID,
98+
Official: false,
99+
CommitID: comment.CommitSHA,
100+
Stale: comment.Invalidated,
101+
OriginalAuthor: comment.OriginalAuthor,
102+
OriginalAuthorID: comment.OriginalAuthorID,
103+
CreatedUnix: comment.CreatedUnix,
104+
UpdatedUnix: comment.CreatedUnix,
105+
}
106+
if _, err := sess.NoAutoTime().Insert(review); err != nil {
107+
return err
108+
}
109+
110+
reviewComment := &Comment{
111+
Type: 22,
112+
PosterID: comment.PosterID,
113+
Content: "",
114+
IssueID: comment.IssueID,
115+
ReviewID: review.ID,
116+
OriginalAuthor: comment.OriginalAuthor,
117+
OriginalAuthorID: comment.OriginalAuthorID,
118+
CreatedUnix: comment.CreatedUnix,
119+
UpdatedUnix: comment.CreatedUnix,
120+
}
121+
if _, err := sess.NoAutoTime().Insert(reviewComment); err != nil {
122+
return err
123+
}
124+
125+
comment.ReviewID = review.ID
126+
if _, err := sess.ID(comment.ID).Cols("review_id").NoAutoTime().Update(comment); err != nil {
127+
return err
128+
}
129+
}
130+
131+
return sess.Commit()
132+
}
133+
134+
var start = 0
135+
var batchSize = 100
136+
for {
137+
var comments = make([]*Comment, 0, batchSize)
138+
if err := x.Where("review_id = 0 and type = 21").Limit(batchSize, start).Find(&comments); err != nil {
139+
return err
119140
}
120-
if _, err := sess.NoAutoTime().Insert(reviewComment); err != nil {
141+
142+
if err := updateComment(comments); err != nil {
121143
return err
122144
}
123145

124-
comment.ReviewID = review.ID
125-
_, err := sess.ID(comment.ID).Cols("review_id").NoAutoTime().Update(comment)
126-
return err
127-
}); err != nil {
128-
return err
146+
start += len(comments)
147+
148+
if len(comments) < batchSize {
149+
break
150+
}
129151
}
130152

131-
return sess.Commit()
153+
return nil
132154
}

0 commit comments

Comments
 (0)