Description
Currently, we return an error and shut down if the sqs client returns any error.
In the case of a connection reset error, the behaviour of the sdks will be to treat it as non-retryable: aws/aws-sdk-go#3027, aws/aws-sdk-go#3971.
As I understand it, this behaviour is general to all AWS sdks, and this error is considered non-retryable because the requests in question may not be idempotent.
In our case, for the sqs source the request will always be idempotent, and we should retry. We can achieve this (as the AWS sdk maintainers advise on the above isssues) by adding a retryer.
As far as I can see, this bug shouldn't have much of an impact on the app in production as we currently use it - when we hit it we will simply return an error, crash, and reboot without data loss.