letsencrypt / letsencrypt/boulder

Expire orders and authzs after too much time processing

Open
#9,013 0 comments 0 reactions 0 assignees View on GitHub

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' beganProcessing bools 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.