diff --git a/models/actions/schedule.go b/models/actions/schedule.go index c751ef51ca..acb9961bf6 100644 --- a/models/actions/schedule.go +++ b/models/actions/schedule.go @@ -118,21 +118,23 @@ func DeleteScheduleTaskByRepo(ctx context.Context, id int64) error { return committer.Commit() } -func CleanRepoScheduleTasks(ctx context.Context, repo *repo_model.Repository) error { +func CleanRepoScheduleTasks(ctx context.Context, repo *repo_model.Repository, cancelPreviousJobs bool) error { // If actions disabled when there is schedule task, this will remove the outdated schedule tasks // There is no other place we can do this because the app.ini will be changed manually if err := DeleteScheduleTaskByRepo(ctx, repo.ID); err != nil { return fmt.Errorf("DeleteCronTaskByRepo: %v", err) } - // cancel running cron jobs of this repository and delete old schedules - if err := CancelPreviousJobs( - ctx, - repo.ID, - repo.DefaultBranch, - "", - webhook_module.HookEventSchedule, - ); err != nil { - return fmt.Errorf("CancelPreviousJobs: %v", err) + if cancelPreviousJobs { + // cancel running cron jobs of this repository and delete old schedules + if err := CancelPreviousJobs( + ctx, + repo.ID, + repo.DefaultBranch, + "", + webhook_module.HookEventSchedule, + ); err != nil { + return fmt.Errorf("CancelPreviousJobs: %v", err) + } } return nil } diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index 25427125db..e25593cf6d 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -1061,7 +1061,7 @@ func updateRepoArchivedState(ctx *context.APIContext, opts api.EditRepoOption) e ctx.Error(http.StatusInternalServerError, "ArchiveRepoState", err) return err } - if err := actions_model.CleanRepoScheduleTasks(ctx, repo); err != nil { + if err := actions_model.CleanRepoScheduleTasks(ctx, repo, true); err != nil { log.Error("CleanRepoScheduleTasks for archived repo %s/%s: %v", ctx.Repo.Owner.Name, repo.Name, err) } log.Trace("Repository was archived: %s/%s", ctx.Repo.Owner.Name, repo.Name) diff --git a/routers/web/repo/setting/setting.go b/routers/web/repo/setting/setting.go index f6a372117f..aee2e2f469 100644 --- a/routers/web/repo/setting/setting.go +++ b/routers/web/repo/setting/setting.go @@ -1031,7 +1031,7 @@ func SettingsPost(ctx *context.Context) { return } - if err := actions_model.CleanRepoScheduleTasks(ctx, repo); err != nil { + if err := actions_model.CleanRepoScheduleTasks(ctx, repo, true); err != nil { log.Error("CleanRepoScheduleTasks for archived repo %s/%s: %v", ctx.Repo.Owner.Name, repo.Name, err) } diff --git a/services/actions/notifier_helper.go b/services/actions/notifier_helper.go index 751b896162..c4bf6955ee 100644 --- a/services/actions/notifier_helper.go +++ b/services/actions/notifier_helper.go @@ -130,7 +130,7 @@ func notify(ctx context.Context, input *notifyInput) error { return nil } if unit_model.TypeActions.UnitGlobalDisabled() { - if err := actions_model.CleanRepoScheduleTasks(ctx, input.Repo); err != nil { + if err := actions_model.CleanRepoScheduleTasks(ctx, input.Repo, true); err != nil { log.Error("CleanRepoScheduleTasks: %v", err) } return nil @@ -496,7 +496,7 @@ func handleSchedules( log.Error("CountSchedules: %v", err) return err } else if count > 0 { - if err := actions_model.CleanRepoScheduleTasks(ctx, input.Repo); err != nil { + if err := actions_model.CleanRepoScheduleTasks(ctx, input.Repo, false); err != nil { log.Error("CleanRepoScheduleTasks: %v", err) } } diff --git a/services/repository/setting.go b/services/repository/setting.go index b82f24271e..33b00cca8c 100644 --- a/services/repository/setting.go +++ b/services/repository/setting.go @@ -29,7 +29,7 @@ func UpdateRepositoryUnits(ctx context.Context, repo *repo_model.Repository, uni } if slices.Contains(deleteUnitTypes, unit.TypeActions) { - if err := actions_model.CleanRepoScheduleTasks(ctx, repo); err != nil { + if err := actions_model.CleanRepoScheduleTasks(ctx, repo, true); err != nil { log.Error("CleanRepoScheduleTasks: %v", err) } }