461
}
462
464
}
465
466
// Returns true when the error is expected and should be retried. You're expected to return
467
// an error in this case, as that possible-rewritten-error is what we'll return
468
>
func (e *executableImpl) isExpectedRetryableError(err error) (isRetryable bool, retErr error) {
executable.go
469
>
defer func() {
470
>
// This is a guard against programming mistakes. Please don't return (true, nil).
471
>
if isRetryable && retErr == nil {
472
retErr = err
473
}
474
}()
475
476
>
var resourceExhaustedErr *serviceerror.ResourceExhausted
executable.go
477
>
if errors.As(err, &resourceExhaustedErr) {
478
switch resourceExhaustedErr.Cause { //nolint:exhaustive
479
case enumspb.RESOURCE_EXHAUSTED_CAUSE_BUSY_WORKFLOW: