From 5d65b9060b24e507fa530a1cfd6171b6d799f5e8 Mon Sep 17 00:00:00 2001
From: TheFox0x7 <thefox0x7@gmail.com>
Date: Fri, 14 Mar 2025 01:28:57 +0100
Subject: [PATCH] remove context from retry downloader (#33871)

follow up to https://github.com/go-gitea/gitea/pull/33399 as I
apparently missed this one.
---
 modules/migration/retry_downloader.go | 30 +++++++++++++--------------
 services/migrations/migrate.go        |  2 +-
 2 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/modules/migration/retry_downloader.go b/modules/migration/retry_downloader.go
index 2926c40df7..69804b7767 100644
--- a/modules/migration/retry_downloader.go
+++ b/modules/migration/retry_downloader.go
@@ -13,36 +13,34 @@ var _ Downloader = &RetryDownloader{}
 // RetryDownloader retry the downloads
 type RetryDownloader struct {
 	Downloader
-	ctx        context.Context
 	RetryTimes int // the total execute times
 	RetryDelay int // time to delay seconds
 }
 
 // NewRetryDownloader creates a retry downloader
-func NewRetryDownloader(ctx context.Context, downloader Downloader, retryTimes, retryDelay int) *RetryDownloader {
+func NewRetryDownloader(downloader Downloader, retryTimes, retryDelay int) *RetryDownloader {
 	return &RetryDownloader{
 		Downloader: downloader,
-		ctx:        ctx,
 		RetryTimes: retryTimes,
 		RetryDelay: retryDelay,
 	}
 }
 
-func (d *RetryDownloader) retry(work func() error) error {
+func (d *RetryDownloader) retry(ctx context.Context, work func(context.Context) error) error {
 	var (
 		times = d.RetryTimes
 		err   error
 	)
 	for ; times > 0; times-- {
-		if err = work(); err == nil {
+		if err = work(ctx); err == nil {
 			return nil
 		}
 		if IsErrNotSupported(err) {
 			return err
 		}
 		select {
-		case <-d.ctx.Done():
-			return d.ctx.Err()
+		case <-ctx.Done():
+			return ctx.Err()
 		case <-time.After(time.Second * time.Duration(d.RetryDelay)):
 		}
 	}
@@ -56,7 +54,7 @@ func (d *RetryDownloader) GetRepoInfo(ctx context.Context) (*Repository, error)
 		err  error
 	)
 
-	err = d.retry(func() error {
+	err = d.retry(ctx, func(ctx context.Context) error {
 		repo, err = d.Downloader.GetRepoInfo(ctx)
 		return err
 	})
@@ -71,7 +69,7 @@ func (d *RetryDownloader) GetTopics(ctx context.Context) ([]string, error) {
 		err    error
 	)
 
-	err = d.retry(func() error {
+	err = d.retry(ctx, func(ctx context.Context) error {
 		topics, err = d.Downloader.GetTopics(ctx)
 		return err
 	})
@@ -86,7 +84,7 @@ func (d *RetryDownloader) GetMilestones(ctx context.Context) ([]*Milestone, erro
 		err        error
 	)
 
-	err = d.retry(func() error {
+	err = d.retry(ctx, func(ctx context.Context) error {
 		milestones, err = d.Downloader.GetMilestones(ctx)
 		return err
 	})
@@ -101,7 +99,7 @@ func (d *RetryDownloader) GetReleases(ctx context.Context) ([]*Release, error) {
 		err      error
 	)
 
-	err = d.retry(func() error {
+	err = d.retry(ctx, func(ctx context.Context) error {
 		releases, err = d.Downloader.GetReleases(ctx)
 		return err
 	})
@@ -116,7 +114,7 @@ func (d *RetryDownloader) GetLabels(ctx context.Context) ([]*Label, error) {
 		err    error
 	)
 
-	err = d.retry(func() error {
+	err = d.retry(ctx, func(ctx context.Context) error {
 		labels, err = d.Downloader.GetLabels(ctx)
 		return err
 	})
@@ -132,7 +130,7 @@ func (d *RetryDownloader) GetIssues(ctx context.Context, page, perPage int) ([]*
 		err    error
 	)
 
-	err = d.retry(func() error {
+	err = d.retry(ctx, func(ctx context.Context) error {
 		issues, isEnd, err = d.Downloader.GetIssues(ctx, page, perPage)
 		return err
 	})
@@ -148,7 +146,7 @@ func (d *RetryDownloader) GetComments(ctx context.Context, commentable Commentab
 		err      error
 	)
 
-	err = d.retry(func() error {
+	err = d.retry(ctx, func(context.Context) error {
 		comments, isEnd, err = d.Downloader.GetComments(ctx, commentable)
 		return err
 	})
@@ -164,7 +162,7 @@ func (d *RetryDownloader) GetPullRequests(ctx context.Context, page, perPage int
 		isEnd bool
 	)
 
-	err = d.retry(func() error {
+	err = d.retry(ctx, func(ctx context.Context) error {
 		prs, isEnd, err = d.Downloader.GetPullRequests(ctx, page, perPage)
 		return err
 	})
@@ -178,7 +176,7 @@ func (d *RetryDownloader) GetReviews(ctx context.Context, reviewable Reviewable)
 		reviews []*Review
 		err     error
 	)
-	err = d.retry(func() error {
+	err = d.retry(ctx, func(ctx context.Context) error {
 		reviews, err = d.Downloader.GetReviews(ctx, reviewable)
 		return err
 	})
diff --git a/services/migrations/migrate.go b/services/migrations/migrate.go
index 8319fd541b..5dda12286f 100644
--- a/services/migrations/migrate.go
+++ b/services/migrations/migrate.go
@@ -168,7 +168,7 @@ func newDownloader(ctx context.Context, ownerName string, opts base.MigrateOptio
 	}
 
 	if setting.Migrations.MaxAttempts > 1 {
-		downloader = base.NewRetryDownloader(ctx, downloader, setting.Migrations.MaxAttempts, setting.Migrations.RetryBackoff)
+		downloader = base.NewRetryDownloader(downloader, setting.Migrations.MaxAttempts, setting.Migrations.RetryBackoff)
 	}
 	return downloader, nil
 }