summaryrefslogtreecommitdiffstats
path: root/modules/task/migrate.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/task/migrate.go')
-rw-r--r--modules/task/migrate.go22
1 files changed, 16 insertions, 6 deletions
diff --git a/modules/task/migrate.go b/modules/task/migrate.go
index 99f0435b28..57424abac3 100644
--- a/modules/task/migrate.go
+++ b/modules/task/migrate.go
@@ -5,6 +5,7 @@
package task
import (
+ "context"
"errors"
"fmt"
"strings"
@@ -15,6 +16,7 @@ import (
"code.gitea.io/gitea/modules/migrations"
migration "code.gitea.io/gitea/modules/migrations/base"
"code.gitea.io/gitea/modules/notification"
+ "code.gitea.io/gitea/modules/process"
"code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util"
@@ -82,11 +84,6 @@ func runMigrateTask(t *models.Task) (err error) {
if err = t.LoadOwner(); err != nil {
return
}
- t.StartTime = timeutil.TimeStampNow()
- t.Status = structs.TaskStatusRunning
- if err = t.UpdateCols("start_time", "status"); err != nil {
- return
- }
var opts *migration.MigrateOptions
opts, err = t.MigrateConfig()
@@ -96,7 +93,20 @@ func runMigrateTask(t *models.Task) (err error) {
opts.MigrateToRepoID = t.RepoID
var repo *models.Repository
- repo, err = migrations.MigrateRepository(graceful.GetManager().HammerContext(), t.Doer, t.Owner.Name, *opts)
+
+ ctx, cancel := context.WithCancel(graceful.GetManager().ShutdownContext())
+ defer cancel()
+ pm := process.GetManager()
+ pid := pm.Add(fmt.Sprintf("MigrateTask: %s/%s", t.Owner.Name, opts.RepoName), cancel)
+ defer pm.Remove(pid)
+
+ t.StartTime = timeutil.TimeStampNow()
+ t.Status = structs.TaskStatusRunning
+ if err = t.UpdateCols("start_time", "status"); err != nil {
+ return
+ }
+
+ repo, err = migrations.MigrateRepository(ctx, t.Doer, t.Owner.Name, *opts)
if err == nil {
log.Trace("Repository migrated [%d]: %s/%s", repo.ID, t.Owner.Name, repo.Name)
return