classifyFailure method
TaskProcessOutcome
classifyFailure(
- Envelope envelope,
- TaskHandler<
Object?> handler, - Object error,
- StackTrace stackTrace,
Classifies a handler failure using the shared retry policy.
Implementation
TaskProcessOutcome classifyFailure(
Envelope envelope,
TaskHandler<Object?> handler,
Object error,
StackTrace stackTrace,
) {
final policy = _resolveRetryPolicy(envelope, handler.options);
final maxRetries = policy?.maxRetries ?? envelope.maxRetries;
final canRetry = envelope.attempt < maxRetries;
if (canRetry &&
error is! TaskRetryVeto &&
_shouldAutoRetry(policy, error)) {
final delay = _computeRetryDelay(
envelope.attempt,
error,
stackTrace,
policy,
);
return TaskProcessRetry(
envelope: envelope,
nextEnvelope: envelope.copyWith(
attempt: envelope.attempt + 1,
maxRetries: maxRetries,
notBefore: stemNow().add(delay),
),
delay: delay,
error: error,
stackTrace: stackTrace,
);
}
return TaskProcessFailure(
envelope: envelope,
error: error,
stackTrace: stackTrace,
retryExhausted: !canRetry && maxRetries > 0,
);
}