61
[]callbackspb.CallbackStatus{callbackspb.CALLBACK_STATUS_SCHEDULED},
62
callbackspb.CALLBACK_STATUS_BACKING_OFF,
63
>
func(cb *Callback, ctx chasm.MutableContext, event EventAttemptFailed) error {
statemachine.go
64
>
cb.recordAttempt(event.Time)
65
>
// Use 0 for elapsed time as we don't limit the retry by time (for now).
66
>
nextDelay := event.RetryPolicy.ComputeNextDelay(0, int(cb.Attempt), event.Err)
67
>
nextAttemptScheduleTime := event.Time.Add(nextDelay)
68
>
cb.NextAttemptScheduleTime = timestamppb.New(nextAttemptScheduleTime)
69
>
cb.LastAttemptFailure = &failurepb.Failure{
70
>
Message: event.Err.Error(),
71
>
FailureInfo: &failurepb.Failure_ApplicationFailureInfo{
72
>
ApplicationFailureInfo: &failurepb.ApplicationFailureInfo{
73
>
NonRetryable: false,
74
>
},
75
>
},
76
>
}
77
>
ctx.AddTask(
78
>
cb,
79
>
chasm.TaskAttributes{ScheduledTime: nextAttemptScheduleTime},
80
>
&callbackspb.BackoffTask{Attempt: cb.Attempt},
81
>
)
82
>
return nil
83
>
},
84
)
85