Skip to content

An unreadable task payload stays stored with no way to clear it #78

Description

@codingjoe

Found while reviewing PR #69 with the SuperJoe crew. Filed as out-of-scope there.

_reap_running_queue catches ImportError and skips the task. That error means a retry callback in the stored payload is gone from the code base. The claim script has already renewed the deadline in the running set, so the entry stays there. A later pass claims the same id and logs the same error. The log repeats every CLAIM_TTL (60 seconds by default).

One part is missing. The task stays in the running set, and the inspector disables the dequeue action on the Running tab (check_action returns False for dequeue on RUNNING). An operator who sees the error cannot clear or requeue that task.

Options:

  • Let the inspector clear a running task after its lease expires.
  • Give the broker a terminal action for a payload whose retry callback is gone. Deletion is one option. A quarantine segment, or a failed entry that carries the raw id and the read error, is another.

Reference: threadmill/backends/redis.py (_reap_running_queue).

Activity

  1. added
    bugCorrectness
    realProven finding
    side questOut-of-scope finding, deferred to its own issue
    on Oct 5, 2026
  2. changed the title [-]An unreadable task payload is preserved but has no way to be cleared[/-] [+]An unreadable task payload stays stored with no way to clear it[/+] on Oct 5, 2026
  3. codingjoe commented on Oct 6, 2026

    @codingjoe
    OwnerAuthor

    Let's apply a terminal fail state and handle it as a regular result on redis to avoid adding bloat.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugCorrectnessrealProven findingside questOut-of-scope finding, deferred to its own issue

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions