This is related to #10.
There are many ways that a pipeline can fail its assigned task. Here are some examples:
- Coding error in the pipeline
- Unexpected response from a download target (e.g. unhandled 4xx/5xx errors that end up in retry loops, aborts, item failures)
- Unclean shutdown (warriors on laptops going to sleep, ^C on manually-run pipelines, power failures, ...)
While we cannot know how long an item will take to complete, we can know whether or not an assignee is still working on an item. We can add a heartbeat to the pipeline that periodically reports liveness back to a tracker. The tracker can use this information to fail items that have gone without a heartbeat for too long.
(This could supercede #10 if we're willing to live with failed items eventually going to a failed queue rather than immediately.)
This is related to #10.
There are many ways that a pipeline can fail its assigned task. Here are some examples:
While we cannot know how long an item will take to complete, we can know whether or not an assignee is still working on an item. We can add a heartbeat to the pipeline that periodically reports liveness back to a tracker. The tracker can use this information to fail items that have gone without a heartbeat for too long.
(This could supercede #10 if we're willing to live with failed items eventually going to a failed queue rather than immediately.)