]> source.dussan.org Git - gitea.git/commitdiff
Fix incorrect ctx usage in defer function (#27740) (#27741)
authorwxiaoguang <wxiaoguang@gmail.com>
Sun, 22 Oct 2023 14:36:49 +0000 (22:36 +0800)
committerGitHub <noreply@github.com>
Sun, 22 Oct 2023 14:36:49 +0000 (14:36 +0000)
services/task/migrate.go

index 70e5abdee6ebd00a82c4f2d800fc2d44bcb6a59f..d03951fd26d4174630688972a4781846d1d9fb5c 100644 (file)
@@ -42,7 +42,7 @@ func handleCreateError(owner *user_model.User, err error) error {
 }
 
 func runMigrateTask(ctx context.Context, t *admin_model.Task) (err error) {
-       defer func() {
+       defer func(ctx context.Context) {
                if e := recover(); e != nil {
                        err = fmt.Errorf("PANIC whilst trying to do migrate task: %v", e)
                        log.Critical("PANIC during runMigrateTask[%d] by DoerID[%d] to RepoID[%d] for OwnerID[%d]: %v\nStacktrace: %v", t.ID, t.DoerID, t.RepoID, t.OwnerID, e, log.Stack(2))
@@ -69,7 +69,7 @@ func runMigrateTask(ctx context.Context, t *admin_model.Task) (err error) {
                }
 
                // then, do not delete the repository, otherwise the users won't be able to see the last error
-       }()
+       }(graceful.GetManager().ShutdownContext()) // even if the parent ctx is canceled, this defer-function still needs to update the task record in database
 
        if err = t.LoadRepo(ctx); err != nil {
                return err