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).
Found while reviewing PR #69 with the SuperJoe crew. Filed as out-of-scope there.
_reap_running_queuecatchesImportErrorand 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 everyCLAIM_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_actionreturnsFalsefordequeueonRUNNING). An operator who sees the error cannot clear or requeue that task.Options:
Reference:
threadmill/backends/redis.py(_reap_running_queue).