aboutsummaryrefslogtreecommitdiffstats
path: root/modules/indexer/issues/indexer.go
diff options
context:
space:
mode:
authorJason Song <i@wolfogre.com>2023-10-16 02:56:57 +0800
committerGitHub <noreply@github.com>2023-10-15 18:56:57 +0000
commit1be49fdda660bce8d33cbd52f9a04629f1878d8f (patch)
treea1d2ff8a682c95984ac6c8f03318521dc4cf9371 /modules/indexer/issues/indexer.go
parentcddf245c12223c783c856c87c21cc796ac425439 (diff)
downloadgitea-1be49fdda660bce8d33cbd52f9a04629f1878d8f.tar.gz
gitea-1be49fdda660bce8d33cbd52f9a04629f1878d8f.zip
Improve retrying index issues (#27554)
Fix #27540
Diffstat (limited to 'modules/indexer/issues/indexer.go')
-rw-r--r--modules/indexer/issues/indexer.go25
1 files changed, 7 insertions, 18 deletions
diff --git a/modules/indexer/issues/indexer.go b/modules/indexer/issues/indexer.go
index 020659c82b..ef06d8862a 100644
--- a/modules/indexer/issues/indexer.go
+++ b/modules/indexer/issues/indexer.go
@@ -204,12 +204,13 @@ func getIssueIndexerQueueHandler(ctx context.Context) func(items ...*IndexerMeta
func populateIssueIndexer(ctx context.Context) {
ctx, _, finished := process.GetManager().AddTypedContext(ctx, "Service: PopulateIssueIndexer", process.SystemProcessType, true)
defer finished()
- if err := PopulateIssueIndexer(ctx, true); err != nil {
+ ctx = contextWithKeepRetry(ctx) // keep retrying since it's a background task
+ if err := PopulateIssueIndexer(ctx); err != nil {
log.Error("Issue indexer population failed: %v", err)
}
}
-func PopulateIssueIndexer(ctx context.Context, keepRetrying bool) error {
+func PopulateIssueIndexer(ctx context.Context) error {
for page := 1; ; page++ {
select {
case <-ctx.Done():
@@ -232,20 +233,8 @@ func PopulateIssueIndexer(ctx context.Context, keepRetrying bool) error {
}
for _, repo := range repos {
- for {
- select {
- case <-ctx.Done():
- return fmt.Errorf("shutdown before completion: %w", ctx.Err())
- default:
- }
- if err := updateRepoIndexer(ctx, repo.ID); err != nil {
- if keepRetrying && ctx.Err() == nil {
- log.Warn("Retry to populate issue indexer for repo %d: %v", repo.ID, err)
- continue
- }
- return fmt.Errorf("populate issue indexer for repo %d: %v", repo.ID, err)
- }
- break
+ if err := updateRepoIndexer(ctx, repo.ID); err != nil {
+ return fmt.Errorf("populate issue indexer for repo %d: %v", repo.ID, err)
}
}
}
@@ -259,8 +248,8 @@ func UpdateRepoIndexer(ctx context.Context, repoID int64) {
}
// UpdateIssueIndexer add/update an issue to the issue indexer
-func UpdateIssueIndexer(issueID int64) {
- if err := updateIssueIndexer(issueID); err != nil {
+func UpdateIssueIndexer(ctx context.Context, issueID int64) {
+ if err := updateIssueIndexer(ctx, issueID); err != nil {
log.Error("Unable to push issue %d to issue indexer: %v", issueID, err)
}
}