From 5e9cc919cf2a400f7ced7bce4a1818659bfc85d5 Mon Sep 17 00:00:00 2001 From: Giteabot Date: Fri, 14 Feb 2025 16:06:46 +0800 Subject: [PATCH] Performance optimization for pull request files loading comments attachments (#33585) (#33592) Backport #33585 by @lunny Co-authored-by: Lunny Xiao --- models/issues/comment_code.go | 6 ++++-- routers/web/repo/pull.go | 12 ++++++------ services/gitdiff/gitdiff.go | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/models/issues/comment_code.go b/models/issues/comment_code.go index 67a77ceb13..b562aab500 100644 --- a/models/issues/comment_code.go +++ b/models/issues/comment_code.go @@ -86,8 +86,10 @@ func findCodeComments(ctx context.Context, opts FindCommentsOptions, issue *Issu ids = append(ids, comment.ReviewID) } } - if err := e.In("id", ids).Find(&reviews); err != nil { - return nil, err + if len(ids) > 0 { + if err := e.In("id", ids).Find(&reviews); err != nil { + return nil, err + } } n := 0 diff --git a/routers/web/repo/pull.go b/routers/web/repo/pull.go index 8fd23f835a..e068ac45c6 100644 --- a/routers/web/repo/pull.go +++ b/routers/web/repo/pull.go @@ -785,18 +785,18 @@ func viewPullFiles(ctx *context.Context, specifiedStartCommit, specifiedEndCommi return } + allComments := issues_model.CommentList{} for _, file := range diff.Files { for _, section := range file.Sections { for _, line := range section.Lines { - for _, comment := range line.Comments { - if err := comment.LoadAttachments(ctx); err != nil { - ctx.ServerError("LoadAttachments", err) - return - } - } + allComments = append(allComments, line.Comments...) } } } + if err := allComments.LoadAttachments(ctx); err != nil { + ctx.ServerError("LoadAttachments", err) + return + } pb, err := git_model.GetFirstMatchProtectedBranchRule(ctx, pull.BaseRepoID, pull.BaseBranch) if err != nil { diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go index bb1722039e..eb7c273d49 100644 --- a/services/gitdiff/gitdiff.go +++ b/services/gitdiff/gitdiff.go @@ -80,7 +80,7 @@ type DiffLine struct { Match int Type DiffLineType Content string - Comments []*issues_model.Comment + Comments issues_model.CommentList SectionInfo *DiffLineSectionInfo }