oxidecomputer / oxidecomputer/omicron
Return HTTP 503 for failed external API requests caused by 503s and other retryable errors
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 572
- Forks
- 97
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 96
Description
Here are two known types of retryable external API failures (there may be more to the list):
- Database lock contention (
TransactionRetryerrors, e.g. oxidecomputer/omicron#3304) - Database connection exhaustion (
All claims are usederrors, e.g. https://github.com/oxidecomputer/customer-support/issues/443#issuecomment-2946710294)
The errors are usually encountered in a saga (returned as HTTP 500 or 503 by the underlying components) and are in turned surfaced as 500 errors. As they are known failure modes under high concurrency or request load, they can probably be HTTP 429 errors to provide the right signal back to the clients (i.e., please retry).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue does not identify files, tests, or entry points. Start by tracing how saga failures from external API requests become HTTP 500 or 503 responses, then determine which retryable errors should produce 503 or 429 and add coverage for the listed lock-contention and connection-exhaustion cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- api
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100