From cf6d398485473b9c5af413bc05ba61378be9274b Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Mon, 6 Sep 2021 18:00:50 +0200 Subject: [PATCH] Resolve TODO: Enable pagination on GiteaDownloader.GetComments() & update another TODO (#16963) * Update TODO in migrations * Resolve TODO: enable pagination on GiteaDownloader.GetComments() --- modules/migrations/gitea_downloader.go | 79 +++++++++++++------------- modules/migrations/migrate.go | 5 +- 2 files changed, 40 insertions(+), 44 deletions(-) diff --git a/modules/migrations/gitea_downloader.go b/modules/migrations/gitea_downloader.go index b947ee74a4..d8a3c84678 100644 --- a/modules/migrations/gitea_downloader.go +++ b/modules/migrations/gitea_downloader.go @@ -459,49 +459,48 @@ func (g *GiteaDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, err func (g *GiteaDownloader) GetComments(opts base.GetCommentOptions) ([]*base.Comment, bool, error) { var allComments = make([]*base.Comment, 0, g.maxPerPage) - // for i := 1; ; i++ { - // make sure gitea can shutdown gracefully - select { - case <-g.ctx.Done(): - return nil, false, nil - default: - } - - comments, _, err := g.client.ListIssueComments(g.repoOwner, g.repoName, opts.Context.ForeignID(), gitea_sdk.ListIssueCommentOptions{ListOptions: gitea_sdk.ListOptions{ - // PageSize: g.maxPerPage, - // Page: i, - }}) - if err != nil { - return nil, false, fmt.Errorf("error while listing comments for issue #%d. Error: %v", opts.Context.ForeignID(), err) - } - - for _, comment := range comments { - reactions, err := g.getCommentReactions(comment.ID) - if err != nil { - log.Warn("Unable to load comment reactions during migrating issue #%d for comment %d to %s/%s. Error: %v", opts.Context.ForeignID(), comment.ID, g.repoOwner, g.repoName, err) - if err2 := models.CreateRepositoryNotice( - fmt.Sprintf("Unable to load reactions during migrating issue #%d for comment %d to %s/%s. Error: %v", opts.Context.ForeignID(), comment.ID, g.repoOwner, g.repoName, err)); err2 != nil { - log.Error("create repository notice failed: ", err2) - } + for i := 1; ; i++ { + // make sure gitea can shutdown gracefully + select { + case <-g.ctx.Done(): + return nil, false, nil + default: } - allComments = append(allComments, &base.Comment{ - IssueIndex: opts.Context.LocalID(), - PosterID: comment.Poster.ID, - PosterName: comment.Poster.UserName, - PosterEmail: comment.Poster.Email, - Content: comment.Body, - Created: comment.Created, - Updated: comment.Updated, - Reactions: reactions, - }) - } + comments, _, err := g.client.ListIssueComments(g.repoOwner, g.repoName, opts.Context.ForeignID(), gitea_sdk.ListIssueCommentOptions{ListOptions: gitea_sdk.ListOptions{ + PageSize: g.maxPerPage, + Page: i, + }}) + if err != nil { + return nil, false, fmt.Errorf("error while listing comments for issue #%d. Error: %v", opts.Context.ForeignID(), err) + } - // TODO enable pagination vor (gitea >= 1.14) when it got implemented - // if !g.pagination || len(comments) < g.maxPerPage { - // break - // } - //} + for _, comment := range comments { + reactions, err := g.getCommentReactions(comment.ID) + if err != nil { + log.Warn("Unable to load comment reactions during migrating issue #%d for comment %d to %s/%s. Error: %v", opts.Context.ForeignID(), comment.ID, g.repoOwner, g.repoName, err) + if err2 := models.CreateRepositoryNotice( + fmt.Sprintf("Unable to load reactions during migrating issue #%d for comment %d to %s/%s. Error: %v", opts.Context.ForeignID(), comment.ID, g.repoOwner, g.repoName, err)); err2 != nil { + log.Error("create repository notice failed: ", err2) + } + } + + allComments = append(allComments, &base.Comment{ + IssueIndex: opts.Context.LocalID(), + PosterID: comment.Poster.ID, + PosterName: comment.Poster.UserName, + PosterEmail: comment.Poster.Email, + Content: comment.Body, + Created: comment.Created, + Updated: comment.Updated, + Reactions: reactions, + }) + } + + if !g.pagination || len(comments) < g.maxPerPage { + break + } + } return allComments, true, nil } diff --git a/modules/migrations/migrate.go b/modules/migrations/migrate.go index 7d5aa9670b..c5d78fba73 100644 --- a/modules/migrations/migrate.go +++ b/modules/migrations/migrate.go @@ -475,10 +475,7 @@ func Init() error { return nil } -// isIPPrivate reports whether ip is a private address, according to -// RFC 1918 (IPv4 addresses) and RFC 4193 (IPv6 addresses). -// from https://github.com/golang/go/pull/42793 -// TODO remove if https://github.com/golang/go/issues/29146 got resolved +// TODO: replace with `ip.IsPrivate()` if min go version is bumped to 1.17 func isIPPrivate(ip net.IP) bool { if ip4 := ip.To4(); ip4 != nil { return ip4[0] == 10 ||