Skip to content

Commit e50873f

Browse files
committed
move ephemeral runner check out of transaction
1 parent 662055b commit e50873f

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

services/actions/task.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,23 @@ func PickTask(ctx context.Context, runner *actions_model.ActionRunner) (*runnerv
2121
job *actions_model.ActionRunJob
2222
)
2323

24-
if err := db.WithTx(ctx, func(ctx context.Context) error {
25-
if runner.Ephemeral {
26-
var task actions_model.ActionTask
27-
has, err := db.GetEngine(ctx).Where("runner_id = ?", runner.ID).Get(&task)
28-
if err == nil && has {
29-
if task.Status == actions_model.StatusWaiting || task.Status == actions_model.StatusRunning || task.Status == actions_model.StatusBlocked {
30-
return nil
31-
}
32-
// task has been finished, remove it
33-
_, _ = db.GetEngine(ctx).Delete(runner)
34-
return fmt.Errorf("runner has been removed")
24+
if runner.Ephemeral {
25+
var task actions_model.ActionTask
26+
has, err := db.GetEngine(ctx).Where("runner_id = ?", runner.ID).Get(&task)
27+
if err == nil && has {
28+
if task.Status == actions_model.StatusWaiting || task.Status == actions_model.StatusRunning || task.Status == actions_model.StatusBlocked {
29+
return nil, false, nil
30+
}
31+
// task has been finished, remove it
32+
_, err = db.GetEngine(ctx).Delete(runner)
33+
if err != nil {
34+
return nil, false, err
3535
}
36+
return nil, false, fmt.Errorf("runner has been removed")
3637
}
38+
}
39+
40+
if err := db.WithTx(ctx, func(ctx context.Context) error {
3741
t, ok, err := actions_model.CreateTaskForRunner(ctx, runner)
3842
if err != nil {
3943
return fmt.Errorf("CreateTaskForRunner: %w", err)

0 commit comments

Comments
 (0)