diff --git a/main.go b/main.go index 297bb24f7..5d2c7e2e7 100755 --- a/main.go +++ b/main.go @@ -21,7 +21,6 @@ import ( _ "code.gitea.io/gitea/modules/markup/csv" _ "code.gitea.io/gitea/modules/markup/markdown" _ "code.gitea.io/gitea/modules/markup/orgmode" - _ "code.gitea.io/gitea/modules/timer" "github.com/urfave/cli" ) diff --git a/models/models.go b/models/models.go index 4f7683774..0e06c60b3 100755 --- a/models/models.go +++ b/models/models.go @@ -151,6 +151,9 @@ func getEngine() (*xorm.Engine, error) { engine.Dialect().SetParams(map[string]string{"rowFormat": "DYNAMIC"}) } engine.SetSchema(setting.Database.Schema) + + HasEngine = true + return engine, nil } diff --git a/modules/timer/timer.go b/modules/timer/timer.go index 58cc13084..a0220380c 100755 --- a/modules/timer/timer.go +++ b/modules/timer/timer.go @@ -3,10 +3,13 @@ package timer import ( "github.com/robfig/cron/v3" + "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/routers/repo" ) -func init() { +func LaunchCronJob() { + log.Trace("Run cron job") + c := cron.New() spec := "*/10 * * * *" diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 52c464b3f..6c530002c 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1956,6 +1956,8 @@ dashboard.cron.finished=Cron: %[1]s has finished dashboard.delete_inactive_accounts = Delete all unactivated accounts dashboard.delete_inactive_accounts.started = Delete all unactivated accounts task started. dashboard.delete_repo_archives = Delete all repository archives +dashboard.start_cron_job = Start to run cron jobs +dashboard.start_cron_job_failed = Start to run cron jobs failed dashboard.delete_repo_archives.started = Delete all repository archives task started. dashboard.delete_missing_repos = Delete all repositories missing their Git files dashboard.delete_missing_repos.started = Delete all repositories missing their Git files task started. diff --git a/routers/init.go b/routers/init.go index dafe0a202..ae700e82b 100755 --- a/routers/init.go +++ b/routers/init.go @@ -31,6 +31,7 @@ import ( "code.gitea.io/gitea/modules/ssh" "code.gitea.io/gitea/modules/storage" "code.gitea.io/gitea/modules/task" + "code.gitea.io/gitea/modules/timer" "code.gitea.io/gitea/modules/webhook" "code.gitea.io/gitea/services/mailer" mirror_service "code.gitea.io/gitea/services/mirror" @@ -134,6 +135,17 @@ func GlobalInit(ctx context.Context) { NewServices() + // Launch cron job after DB configured. + if models.HasEngine { + log.Info("%s", unknwoni18n.Tr("en-US", "admin.dashboard.start_cron_job")) + go timer.LaunchCronJob() + } else { + if err := models.SetEngine(); err == nil { + log.Info("%s", unknwoni18n.Tr("en-US", "admin.dashboard.start_cron_job")) + go timer.LaunchCronJob() + } + } + if setting.InstallLock { highlight.NewContext() external.RegisterParsers()