classifyFailure method

TaskProcessOutcome classifyFailure(
  1. Envelope envelope,
  2. TaskHandler<Object?> handler,
  3. Object error,
  4. 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,
  );
}