loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Remove scheduled action tasks if the repo is archived (#30224)

Fix #30220

(cherry picked from commit 1ef2eb50d82d07b1e4ff312ef58953d1bba2437a)

authored by

Zettat123 and committed by
Gergely Nagy
87870ade 92148245

+29 -2
+10
routers/api/v1/repo/repo.go
··· 11 11 "strings" 12 12 "time" 13 13 14 + actions_model "code.gitea.io/gitea/models/actions" 14 15 activities_model "code.gitea.io/gitea/models/activities" 15 16 "code.gitea.io/gitea/models/db" 16 17 "code.gitea.io/gitea/models/organization" ··· 30 31 "code.gitea.io/gitea/modules/validation" 31 32 "code.gitea.io/gitea/modules/web" 32 33 "code.gitea.io/gitea/routers/api/v1/utils" 34 + actions_service "code.gitea.io/gitea/services/actions" 33 35 "code.gitea.io/gitea/services/context" 34 36 "code.gitea.io/gitea/services/convert" 35 37 "code.gitea.io/gitea/services/issue" ··· 1027 1029 ctx.Error(http.StatusInternalServerError, "ArchiveRepoState", err) 1028 1030 return err 1029 1031 } 1032 + if err := actions_model.CleanRepoScheduleTasks(ctx, repo); err != nil { 1033 + log.Error("CleanRepoScheduleTasks for archived repo %s/%s: %v", ctx.Repo.Owner.Name, repo.Name, err) 1034 + } 1030 1035 log.Trace("Repository was archived: %s/%s", ctx.Repo.Owner.Name, repo.Name) 1031 1036 } else { 1032 1037 if err := repo_model.SetArchiveRepoState(ctx, repo, *opts.Archived); err != nil { 1033 1038 log.Error("Tried to un-archive a repo: %s", err) 1034 1039 ctx.Error(http.StatusInternalServerError, "ArchiveRepoState", err) 1035 1040 return err 1041 + } 1042 + if ctx.Repo.Repository.UnitEnabled(ctx, unit_model.TypeActions) { 1043 + if err := actions_service.DetectAndHandleSchedules(ctx, repo); err != nil { 1044 + log.Error("DetectAndHandleSchedules for un-archived repo %s/%s: %v", ctx.Repo.Owner.Name, repo.Name, err) 1045 + } 1036 1046 } 1037 1047 log.Trace("Repository was un-archived: %s/%s", ctx.Repo.Owner.Name, repo.Name) 1038 1048 }
+12
routers/web/repo/setting/setting.go
··· 13 13 "time" 14 14 15 15 "code.gitea.io/gitea/models" 16 + actions_model "code.gitea.io/gitea/models/actions" 16 17 "code.gitea.io/gitea/models/db" 17 18 "code.gitea.io/gitea/models/organization" 18 19 repo_model "code.gitea.io/gitea/models/repo" ··· 29 30 "code.gitea.io/gitea/modules/util" 30 31 "code.gitea.io/gitea/modules/validation" 31 32 "code.gitea.io/gitea/modules/web" 33 + actions_service "code.gitea.io/gitea/services/actions" 32 34 asymkey_service "code.gitea.io/gitea/services/asymkey" 33 35 "code.gitea.io/gitea/services/context" 34 36 "code.gitea.io/gitea/services/forms" ··· 929 931 return 930 932 } 931 933 934 + if err := actions_model.CleanRepoScheduleTasks(ctx, repo); err != nil { 935 + log.Error("CleanRepoScheduleTasks for archived repo %s/%s: %v", ctx.Repo.Owner.Name, repo.Name, err) 936 + } 937 + 932 938 ctx.Flash.Success(ctx.Tr("repo.settings.archive.success")) 933 939 934 940 log.Trace("Repository was archived: %s/%s", ctx.Repo.Owner.Name, repo.Name) ··· 945 951 ctx.Flash.Error(ctx.Tr("repo.settings.unarchive.error")) 946 952 ctx.Redirect(ctx.Repo.RepoLink + "/settings") 947 953 return 954 + } 955 + 956 + if ctx.Repo.Repository.UnitEnabled(ctx, unit_model.TypeActions) { 957 + if err := actions_service.DetectAndHandleSchedules(ctx, repo); err != nil { 958 + log.Error("DetectAndHandleSchedules for un-archived repo %s/%s: %v", ctx.Repo.Owner.Name, repo.Name, err) 959 + } 948 960 } 949 961 950 962 ctx.Flash.Success(ctx.Tr("repo.settings.unarchive.success"))
+2 -2
services/actions/notifier_helper.go
··· 119 119 log.Debug("ignore executing %v for event %v whose doer is %v", getMethod(ctx), input.Event, input.Doer.Name) 120 120 return nil 121 121 } 122 - if input.Repo.IsEmpty { 122 + if input.Repo.IsEmpty || input.Repo.IsArchived { 123 123 return nil 124 124 } 125 125 if unit_model.TypeActions.UnitGlobalDisabled() { ··· 536 536 537 537 // DetectAndHandleSchedules detects the schedule workflows on the default branch and create schedule tasks 538 538 func DetectAndHandleSchedules(ctx context.Context, repo *repo_model.Repository) error { 539 - if repo.IsEmpty { 539 + if repo.IsEmpty || repo.IsArchived { 540 540 return nil 541 541 } 542 542
+5
services/actions/schedule_tasks.go
··· 66 66 } 67 67 } 68 68 69 + if row.Repo.IsArchived { 70 + // Skip if the repo is archived 71 + continue 72 + } 73 + 69 74 cfg, err := row.Repo.GetUnit(ctx, unit.TypeActions) 70 75 if err != nil { 71 76 if repo_model.IsErrUnitTypeNotExist(err) {