Currently, Jets doesn’t do extra retry logic. There is some retry behavior built into Lambda. The devil is in the details.
The retry behavior of Lambda depending on a variety of factors. Docs: https://docs.aws.amazon.com/lambda/latest/dg/retries-on-errors.html
Depending on the type of error, the type of invocation, and the client or service that invokes the function, the retry behavior and the strategy for managing errors varies.
Jets Jobs that called from a CloudWatch Scheduled Event are asynchronous. For asynchronous Lambda function calls, from the docs:
Lambda retries function errors twice.
There’s not much control over the retry logic. IE: Exponentially, immediately, etc.
You can optionally associate a dead-letter queue on the function to capture the events after all 3 attempts have failed. The dead-letter queue is part of the function properties https://rubyonjets.com/docs/function-properties/ It’s up to the application to figure out how to handle items in the dead letter queue.
For API Gateway, Jets uses the Lambda Proxy integration, which calls the Lambda function synchronously. So there are no retries. From the docs:
For synchronous invocation, the service is responsible for retries.
Hope that helps.