mirror of
https://github.com/go-gitea/gitea
synced 2024-08-21 06:41:53 +02:00
Close **Prune hook_task Table (#10741)** Added a cron job to delete webhook deliveries in the hook_task table. It can be turned on/off and the schedule controlled globally via app.ini. The data can be deleted by either the age of the delivery which is the default or by deleting the all but the most recent deliveries _per webhook_. Note: I had previously submitted pr #11416 but I closed it when I realized that I had deleted per repository instead of per webhook. Also, I decided allowing the settings to be overridden via the ui was overkill. Also this version allows the deletion by age which is probably what most people would want.
140 lines
3.9 KiB
Go
140 lines
3.9 KiB
Go
// Copyright 2020 The Gitea Authors. All rights reserved.
|
|
// Use of this source code is governed by a MIT-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package cron
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"code.gitea.io/gitea/models"
|
|
"code.gitea.io/gitea/modules/migrations"
|
|
repository_service "code.gitea.io/gitea/modules/repository"
|
|
"code.gitea.io/gitea/modules/setting"
|
|
mirror_service "code.gitea.io/gitea/services/mirror"
|
|
)
|
|
|
|
func registerUpdateMirrorTask() {
|
|
RegisterTaskFatal("update_mirrors", &BaseConfig{
|
|
Enabled: true,
|
|
RunAtStart: false,
|
|
Schedule: "@every 10m",
|
|
NoSuccessNotice: true,
|
|
}, func(ctx context.Context, _ *models.User, _ Config) error {
|
|
return mirror_service.Update(ctx)
|
|
})
|
|
}
|
|
|
|
func registerRepoHealthCheck() {
|
|
type RepoHealthCheckConfig struct {
|
|
BaseConfig
|
|
Timeout time.Duration
|
|
Args []string `delim:" "`
|
|
}
|
|
RegisterTaskFatal("repo_health_check", &RepoHealthCheckConfig{
|
|
BaseConfig: BaseConfig{
|
|
Enabled: true,
|
|
RunAtStart: false,
|
|
Schedule: "@every 24h",
|
|
},
|
|
Timeout: 60 * time.Second,
|
|
Args: []string{},
|
|
}, func(ctx context.Context, _ *models.User, config Config) error {
|
|
rhcConfig := config.(*RepoHealthCheckConfig)
|
|
return repository_service.GitFsck(ctx, rhcConfig.Timeout, rhcConfig.Args)
|
|
})
|
|
}
|
|
|
|
func registerCheckRepoStats() {
|
|
RegisterTaskFatal("check_repo_stats", &BaseConfig{
|
|
Enabled: true,
|
|
RunAtStart: true,
|
|
Schedule: "@every 24h",
|
|
}, func(ctx context.Context, _ *models.User, _ Config) error {
|
|
return models.CheckRepoStats(ctx)
|
|
})
|
|
}
|
|
|
|
func registerArchiveCleanup() {
|
|
RegisterTaskFatal("archive_cleanup", &OlderThanConfig{
|
|
BaseConfig: BaseConfig{
|
|
Enabled: true,
|
|
RunAtStart: true,
|
|
Schedule: "@every 24h",
|
|
},
|
|
OlderThan: 24 * time.Hour,
|
|
}, func(ctx context.Context, _ *models.User, config Config) error {
|
|
acConfig := config.(*OlderThanConfig)
|
|
return models.DeleteOldRepositoryArchives(ctx, acConfig.OlderThan)
|
|
})
|
|
}
|
|
|
|
func registerSyncExternalUsers() {
|
|
RegisterTaskFatal("sync_external_users", &UpdateExistingConfig{
|
|
BaseConfig: BaseConfig{
|
|
Enabled: true,
|
|
RunAtStart: false,
|
|
Schedule: "@every 24h",
|
|
},
|
|
UpdateExisting: true,
|
|
}, func(ctx context.Context, _ *models.User, config Config) error {
|
|
realConfig := config.(*UpdateExistingConfig)
|
|
return models.SyncExternalUsers(ctx, realConfig.UpdateExisting)
|
|
})
|
|
}
|
|
|
|
func registerDeletedBranchesCleanup() {
|
|
RegisterTaskFatal("deleted_branches_cleanup", &OlderThanConfig{
|
|
BaseConfig: BaseConfig{
|
|
Enabled: true,
|
|
RunAtStart: true,
|
|
Schedule: "@every 24h",
|
|
},
|
|
OlderThan: 24 * time.Hour,
|
|
}, func(ctx context.Context, _ *models.User, config Config) error {
|
|
realConfig := config.(*OlderThanConfig)
|
|
models.RemoveOldDeletedBranches(ctx, realConfig.OlderThan)
|
|
return nil
|
|
})
|
|
}
|
|
|
|
func registerUpdateMigrationPosterID() {
|
|
RegisterTaskFatal("update_migration_poster_id", &BaseConfig{
|
|
Enabled: true,
|
|
RunAtStart: true,
|
|
Schedule: "@every 24h",
|
|
}, func(ctx context.Context, _ *models.User, _ Config) error {
|
|
return migrations.UpdateMigrationPosterID(ctx)
|
|
})
|
|
}
|
|
|
|
func registerCleanupHookTaskTable() {
|
|
RegisterTaskFatal("cleanup_hook_task_table", &CleanupHookTaskConfig{
|
|
BaseConfig: BaseConfig{
|
|
Enabled: true,
|
|
RunAtStart: false,
|
|
Schedule: "@every 24h",
|
|
},
|
|
CleanupType: "OlderThan",
|
|
OlderThan: 168 * time.Hour,
|
|
NumberToKeep: 10,
|
|
}, func(ctx context.Context, _ *models.User, config Config) error {
|
|
realConfig := config.(*CleanupHookTaskConfig)
|
|
return models.CleanupHookTaskTable(ctx, models.ToHookTaskCleanupType(realConfig.CleanupType), realConfig.OlderThan, realConfig.NumberToKeep)
|
|
})
|
|
}
|
|
|
|
func initBasicTasks() {
|
|
registerUpdateMirrorTask()
|
|
registerRepoHealthCheck()
|
|
registerCheckRepoStats()
|
|
registerArchiveCleanup()
|
|
registerSyncExternalUsers()
|
|
registerDeletedBranchesCleanup()
|
|
if !setting.Repository.DisableMigrations {
|
|
registerUpdateMigrationPosterID()
|
|
}
|
|
registerCleanupHookTaskTable()
|
|
}
|