Skip to content

Commit 2d0ff00

Browse files
wolfogreGiteaBot
andauthored
Improve updating Actions tasks (#24600)
Co-authored-by: Giteabot <teabot@gitea.io>
1 parent ea7954f commit 2d0ff00

File tree

2 files changed

+12
-28
lines changed

2 files changed

+12
-28
lines changed

models/actions/task.go

+11-6
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ func CreateTaskForRunner(ctx context.Context, runner *ActionRunner) (*ActionTask
291291
}
292292

293293
task.LogFilename = logFileName(job.Run.Repo.FullName(), task.ID)
294-
if _, err := e.ID(task.ID).Cols("log_filename").Update(task); err != nil {
294+
if err := UpdateTask(ctx, task, "log_filename"); err != nil {
295295
return nil, false, err
296296
}
297297

@@ -367,9 +367,18 @@ func UpdateTaskByState(ctx context.Context, state *runnerv1.TaskState) (*ActionT
367367
return nil, util.ErrNotExist
368368
}
369369

370+
if task.Status.IsDone() {
371+
// the state is final, do nothing
372+
return task, nil
373+
}
374+
375+
// state.Result is not unspecified means the task is finished
370376
if state.Result != runnerv1.Result_RESULT_UNSPECIFIED {
371377
task.Status = Status(state.Result)
372378
task.Stopped = timeutil.TimeStamp(state.StoppedAt.AsTime().Unix())
379+
if err := UpdateTask(ctx, task, "status", "stopped"); err != nil {
380+
return nil, err
381+
}
373382
if _, err := UpdateRunJob(ctx, &ActionRunJob{
374383
ID: task.JobID,
375384
Status: task.Status,
@@ -379,10 +388,6 @@ func UpdateTaskByState(ctx context.Context, state *runnerv1.TaskState) (*ActionT
379388
}
380389
}
381390

382-
if _, err := e.ID(task.ID).Update(task); err != nil {
383-
return nil, err
384-
}
385-
386391
if err := task.LoadAttributes(ctx); err != nil {
387392
return nil, err
388393
}
@@ -440,7 +445,7 @@ func StopTask(ctx context.Context, taskID int64, status Status) error {
440445
return err
441446
}
442447

443-
if _, err := e.ID(task.ID).Update(task); err != nil {
448+
if err := UpdateTask(ctx, task, "status", "stopped"); err != nil {
444449
return err
445450
}
446451

routers/api/actions/runner/runner.go

+1-22
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010

1111
actions_model "code.gitea.io/gitea/models/actions"
1212
"code.gitea.io/gitea/modules/actions"
13-
"code.gitea.io/gitea/modules/json"
1413
"code.gitea.io/gitea/modules/log"
1514
"code.gitea.io/gitea/modules/util"
1615
actions_service "code.gitea.io/gitea/services/actions"
@@ -120,27 +119,7 @@ func (s *Service) UpdateTask(
120119
ctx context.Context,
121120
req *connect.Request[runnerv1.UpdateTaskRequest],
122121
) (*connect.Response[runnerv1.UpdateTaskResponse], error) {
123-
{
124-
// to debug strange runner behaviors, it could be removed if all problems have been solved.
125-
stateMsg, _ := json.Marshal(req.Msg.State)
126-
log.Trace("update task with state: %s", stateMsg)
127-
}
128-
129-
// Get Task first
130-
task, err := actions_model.GetTaskByID(ctx, req.Msg.State.Id)
131-
if err != nil {
132-
return nil, status.Errorf(codes.Internal, "can't find the task: %v", err)
133-
}
134-
if task.Status.IsCancelled() {
135-
return connect.NewResponse(&runnerv1.UpdateTaskResponse{
136-
State: &runnerv1.TaskState{
137-
Id: req.Msg.State.Id,
138-
Result: task.Status.AsResult(),
139-
},
140-
}), nil
141-
}
142-
143-
task, err = actions_model.UpdateTaskByState(ctx, req.Msg.State)
122+
task, err := actions_model.UpdateTaskByState(ctx, req.Msg.State)
144123
if err != nil {
145124
return nil, status.Errorf(codes.Internal, "update task: %v", err)
146125
}

0 commit comments

Comments
 (0)