Aglet

Triage low-priority job starvation by wait age and service

A low-priority job may be delayed because every worker is busy, because the selector always favors new arrivals, or because it is not eligible. Triage one old job alongside the arrivals that bypass it. Compare a quiet interval with a sustained favored stream before labeling the pattern starvation.

Establish what is happening

  1. Follow one aging job

    Record the low-priority job’s ready time, queue, eligibility, claim attempts if available, and current age. Note whether it remains visible and valid. Choose a comparable favored job so the comparison includes worker class and actual readiness.

  2. Describe the arrival stream

    List favored jobs that claimed during the wait, their ready times, service durations, and worker occupancy. Separate no-capacity periods from moments when a worker became free and still selected newer work. This distinguishes starvation from a continuously full pool.

  3. Compare quiet and sustained load

    Run or inspect a quiet interval where the old job can claim, then a sustained stream of favored arrivals. Keep queue policy and worker count fixed. Identify the first available service opportunity the low-priority job misses and preserve its evidence.

What to carry forward

Return the aging job, favored arrival stream, worker availability, missed service opportunity, and wait-age evidence. Classify the scope as capacity, eligibility, selector preference, or starvation under a sustained mix. Keep the claim open if no worker became available while the job waited.

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