feat: persist workflow admission and initial execution graph
This commit is contained in:
@@ -217,6 +217,11 @@ func businessKeyValue(key string) *string {
|
||||
|
||||
// insertAcceptedTask 要求调用方已持有应用额度和队列锁,并将身份、事件及审计同事务提交。
|
||||
func insertAcceptedTask(ctx context.Context, tx *sql.Tx, ns, taskID core.ID, in service.SubmitInput, retryOf *core.ID) (service.TaskView, error) {
|
||||
return insertAcceptedTaskUntil(ctx, tx, ns, taskID, in, retryOf, nil)
|
||||
}
|
||||
|
||||
// insertAcceptedTaskUntil 在原任务时限基础上收紧绝对父截止,不重写冻结重试策略。
|
||||
func insertAcceptedTaskUntil(ctx context.Context, tx *sql.Tx, ns, taskID core.ID, in service.SubmitInput, retryOf *core.ID, parentDeadline *time.Time) (service.TaskView, error) {
|
||||
now, err := dbNow(ctx, tx)
|
||||
if err != nil {
|
||||
return service.TaskView{}, err
|
||||
@@ -227,6 +232,9 @@ func insertAcceptedTask(ctx context.Context, tx *sql.Tx, ns, taskID core.ID, in
|
||||
available = *in.AvailableAt
|
||||
}
|
||||
deadline := now.Add(time.Duration(in.TaskTimeoutMS) * time.Millisecond)
|
||||
if parentDeadline != nil {
|
||||
deadline = minimumTime(deadline, *parentDeadline)
|
||||
}
|
||||
if available.Before(now.Add(-time.Second)) || !available.Before(deadline) {
|
||||
return service.TaskView{}, fault.Invalid("available_at must be current/future and before the task deadline")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user