SqsException does not override the retryable method
Describe the bug
During the wide scale AWS issue on October 20th, 2025 one of our services experienced failures creating new SQS messages. We ended up not retrying these messages because the retryable() method on the SqsException object returned false. As far as I can tell, the retryable() method is falling back to the implementation in SdkException which is hard coded to false.
We traced out the exception which included this: s.a.a.s.s.m.SqsException: Service returned HTTP status code 503 (Service: Sqs, Status Code: 503, Request ID:
As this failure was due to getting a 503 from the SQS service, I would have expected this to have been considered a retryable error.
Regression Issue
- [ ] Select this option if this issue appears to be a regression.
Expected Behavior
An SDK failure due to the AWS service returning 503 should result in the retryable() method returning true.
Current Behavior
retryable() is hard coded to always return false.
Reproduction Steps
SQSException (via inheritance) is hard coded for the retryable() method to return false.
Possible Solution
The retryable method should probably return true for at least 500 and 503 response codes.
Additional Information/Context
No response
AWS Java SDK version used
2.31.78 was in use at the time, but there does not appear to be any change in the latest 2.36.0
JDK version used
17
Operating System and version
current Amazon Linux 2023
Hi @JasonMathison
Thanks for reporting the issue. This is working as designed, but we understand the confusion. The SDK does retry HTTP 503 errors by default - the issue is likely in how your application's retry logic was configured during the outage.
For retries, SDK uses the SdkDefaultRetrySetting, but SqsException.retryable() serves a different purpose (service-modeled exceptions only).
The SDK's automatic retry mechanism is handling HTTP 503 correctly.
Regards, Chaitanya
It looks like this issue has not been active for more than five days. In the absence of more information, we will be closing this issue soon. If you find that this is still a problem, please add a comment to prevent automatic closure, or if the issue is already closed please feel free to reopen it.
To verify we understand. We now consider SQS response codes >= 500 retry-able. Is that what our code is expected to do?