Aglet

Set a recurrence guard for low-priority starvation

The lasting lesson is a fairness expectation that can be observed in traces. Define what eventual service means for each class, how capacity shortages differ from repeated bypasses, and which evidence an operator should preserve. Keep the arrival mix and low-priority witness stable enough to expose drift after queue changes.

Keep the lesson for the next incident

  1. Define the wait contract

    State the comparison used for low-priority wait, the eligibility conditions, and the review state when a job exceeds its intended age. Do not promise a time without an operating basis; name the service opportunity or class share that can actually be observed.

  2. Keep a pressure fixture

    Retain quiet, mixed, and sustained favored-arrival cases with expected claim and completion relationships. Re-run them after selector changes, worker scaling, priority additions, or new job classes alter the arrival mix.

  3. Review age and bypass signals

    Watch old eligible jobs, repeated worker-free bypasses, and a class whose service share vanishes during favored traffic. Inspect capacity and eligibility alongside selector evidence. Assign a queue owner when a new policy changes which class is allowed to wait.

What to carry forward

Preserve a class-specific wait contract, pressure fixture, and recurrence signal based on eligible service opportunities. Keep capacity and selector evidence separate. Reopen review when a new priority class, worker pool, or arrival pattern changes whether low-priority work can receive eventual service.

Technical background: Rails guides.

Keep the decision with the work.

Use a Work Item in Aglet to record the problem, the evidence you have, and the next decision. Add an owner and priority, then keep updates in the discussion so the next person can follow the reasoning.

Create an account See the product workflow