letsencrypt / letsencrypt/boulder
Expire orders and authzs after too much time processing
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 5.8k
- Forks
- 649
- Avg merge
- 3d 23h
- Merged PRs (30d)
- 24
Description
We mark orders and authzs as "beganProcessing" in the database, but if a validation gets stuck, that can leave the authorization in the processing state forever. This can cause clients to get stuck, because we're willing to reuse orders which have authorizations in the processing state.
The generic and intuitive fix for this is that processing should have a timeout. Any object which has been moved into the processing state should be considered failed if it hasn't finished and the processing began more than X minutes ago.
Steps to get there:
- Replace the order and authz tables'
beganProcessingbools with timestamps - Add checks for that timestamp being too far in the past, and return a new shape of error if it is
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
Start by locating the order and authz table definitions and the code that moves these objects into and out of processing. Trace how validation detects processing states and how errors are shaped. Done means beganProcessing is timestamp-based, stale processing is treated as failed after the chosen timeout, and the new error shape is returned consistently.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- backend, databases
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100