mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Fix incorrect ctx usage in defer function (#27740)
This commit is contained in:
		@@ -42,13 +42,11 @@ func handleCreateError(owner *user_model.User, err error) error {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func runMigrateTask(ctx context.Context, t *admin_model.Task) (err error) {
 | 
					func runMigrateTask(ctx context.Context, t *admin_model.Task) (err error) {
 | 
				
			||||||
	defer func() {
 | 
						defer func(ctx context.Context) {
 | 
				
			||||||
		if e := recover(); e != nil {
 | 
							if e := recover(); e != nil {
 | 
				
			||||||
			err = fmt.Errorf("PANIC whilst trying to do migrate task: %v", e)
 | 
								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))
 | 
								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))
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		// fixme: Because ctx is canceled here, so the db.DefaultContext is needed.
 | 
					 | 
				
			||||||
		ctx := db.DefaultContext
 | 
					 | 
				
			||||||
		if err == nil {
 | 
							if err == nil {
 | 
				
			||||||
			err = admin_model.FinishMigrateTask(ctx, t)
 | 
								err = admin_model.FinishMigrateTask(ctx, t)
 | 
				
			||||||
			if err == nil {
 | 
								if err == nil {
 | 
				
			||||||
@@ -69,7 +67,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
 | 
							// 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 {
 | 
						if err = t.LoadRepo(ctx); err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user