When a taxi dies unexpectedly, it leaves an inconvenient mess behind. The task it was working on remains marked "active", but is actually abandoned. This requires the user to fix the task by hand.
Solution: the "taxis" table contains a registry of all currently-running taxis. Occasionally (between each task), each taxi checks the queue to make sure all registered taxis are present. If any are missing, un-abandon their task and mark them as MIA in the taxi registry (to call user attention to the issue).
For anti-thrashing purposes, each task should probably have some sort of "n_times_abandoned" counter. If it goes above some threshold, e.g. 2 or 3 attempts, the taxis will mark it "failed" or "unrunnable" instead of un-abandoning it to be tried again.
When a taxi dies unexpectedly, it leaves an inconvenient mess behind. The task it was working on remains marked "active", but is actually abandoned. This requires the user to fix the task by hand.
Solution: the "taxis" table contains a registry of all currently-running taxis. Occasionally (between each task), each taxi checks the queue to make sure all registered taxis are present. If any are missing, un-abandon their task and mark them as MIA in the taxi registry (to call user attention to the issue).
For anti-thrashing purposes, each task should probably have some sort of "n_times_abandoned" counter. If it goes above some threshold, e.g. 2 or 3 attempts, the taxis will mark it "failed" or "unrunnable" instead of un-abandoning it to be tried again.