loading up the forgejo repo on tangled to test page performance
1// Copyright 2022 The Gitea Authors. All rights reserved.
2// SPDX-License-Identifier: MIT
3
4package cron
5
6import (
7 "context"
8
9 user_model "forgejo.org/models/user"
10 "forgejo.org/modules/setting"
11 actions_service "forgejo.org/services/actions"
12)
13
14func initActionsTasks() {
15 if !setting.Actions.Enabled {
16 return
17 }
18 registerStopZombieTasks()
19 registerStopEndlessTasks()
20 registerCancelAbandonedJobs()
21 registerScheduleTasks()
22 registerActionsCleanup()
23}
24
25func registerStopZombieTasks() {
26 RegisterTaskFatal("stop_zombie_tasks", &BaseConfig{
27 Enabled: true,
28 RunAtStart: true,
29 Schedule: "@every 5m",
30 }, func(ctx context.Context, _ *user_model.User, cfg Config) error {
31 return actions_service.StopZombieTasks(ctx)
32 })
33}
34
35func registerStopEndlessTasks() {
36 RegisterTaskFatal("stop_endless_tasks", &BaseConfig{
37 Enabled: true,
38 RunAtStart: true,
39 Schedule: "@every 30m",
40 }, func(ctx context.Context, _ *user_model.User, cfg Config) error {
41 return actions_service.StopEndlessTasks(ctx)
42 })
43}
44
45func registerCancelAbandonedJobs() {
46 RegisterTaskFatal("cancel_abandoned_jobs", &BaseConfig{
47 Enabled: true,
48 RunAtStart: true,
49 Schedule: "@every 6h",
50 }, func(ctx context.Context, _ *user_model.User, cfg Config) error {
51 return actions_service.CancelAbandonedJobs(ctx)
52 })
53}
54
55// registerScheduleTasks registers a scheduled task that runs every minute to start any due schedule tasks.
56func registerScheduleTasks() {
57 // Register the task with a unique name, enabled status, and schedule for every minute.
58 RegisterTaskFatal("start_schedule_tasks", &BaseConfig{
59 Enabled: true,
60 RunAtStart: false,
61 Schedule: "@every 1m",
62 }, func(ctx context.Context, _ *user_model.User, cfg Config) error {
63 // Call the function to start schedule tasks and pass the context.
64 return actions_service.StartScheduleTasks(ctx)
65 })
66}
67
68func registerActionsCleanup() {
69 RegisterTaskFatal("cleanup_actions", &BaseConfig{
70 Enabled: true,
71 RunAtStart: false,
72 Schedule: "@midnight",
73 }, func(ctx context.Context, _ *user_model.User, _ Config) error {
74 return actions_service.Cleanup(ctx)
75 })
76}