Cylc has gradually accrued new task states (and associated triggers and outputs over the years) and they need tidying up. By thinking this through again from the top we can actually halve the number of abstract task states from 8 to 4.
(i.e. task states that have a corresponding job state)
current name | NEW name | meaning |
---|---|---|
submitted |
submit-succeeded |
job submitted to batch system |
submit-failed |
submit-failed |
job submitted but did not execute |
running |
running |
job started, but did not finish yet |
succeeded |
run-succeeded |
job finished successfully |
failed |
run-failed |
job finished unsuccessfully |
Notes:
run-
and submit-
added to disambiguate and make consistent(i.e. task states with no corresponding job state)
These are problematic in several ways, detailed below the table.
current name | meaning |
---|---|
runahead |
task held in the non-active runahead pool while too far ahead |
waiting |
waiting for prerequisites to be met |
held |
will not submit job even if prerequisites met |
queued |
held back in an internal queue |
ready |
preparing job submission, including subprocess pool queue |
expired |
waited too long, do not bother to submit |
submit-retrying |
job submission failed, will try again later |
retrying |
job execution failed, will try again later |
Problems:
runahead
is really an artifact of the task-pool implementation and should not
be exposed to users; it will not exist in the spawn-on-demand eraqueued
(internal queue) gets confused with submitted
(to a batch queue)ready
is not descriptive of what is actually going on (see “meaning” in the
table)held
is problematic as a state, e.g. what state to release to after forced
state manipulation during the hold?retrying
is ambiguous (should be run-retry
) but in fact both retrying
states are problematic: a run-retry necessarily involves a submit-retry; the
word retrying
wrongly suggests already running again. In fact “retrying”
is the reason why a previously-failed or previously submit-failed task has
been returned to the waiting
state, with a new clock-trigger(These make perfect sense, and are easy to explain and understand!)
NEW name | meaning |
---|---|
waiting |
(formerly waiting , queued , and runahead ) waiting on all prerequisites |
preparing |
(formerly ready ) all prerequisites met; preparing for job submission |
expired |
(unchanged) waited too long, do not bother to submit |
Notes:
runahead
and queued
status, but absorbing them into into
waiting
, which now means waiting on all prerequisites: task dependencies,
clock and xtriggers, internal queues, runahead release, etc.held
state
waiting
tasks, but we should still attach a “held” badge
to a task in any state to indicate that it will not submit its job even
if it achieves or is put in the waiting
statesubmit-retry
and (run-)retry
(see above)
preparing
state includes:
(These are mostly an internal concept; just make consistent with task states)
current | new |
---|---|
expired |
expired |
submitted |
submit-succeeded |
submit-failed |
submit-failed |
started |
run-started |
succeeded |
run-succeeded |
failed |
run-failed |
(custom) | (custom) |
Notes:
run-
prefixes for consistency and to avoid any ambiguityold | new |
---|---|
:expire[d] |
:expired |
:submit[ted] |
:submit-succeeded |
:submit-fail[ed] |
:submit-failed |
:start[ed] |
:started |
:succeed[ed] |
:run-succeeded (default) |
:fail[ed] |
:run-failed |
:(custom) | :(custom) |
Notes:
run-succeeded
is the default and rarely be used explicitly(Roughly; can be refined on appropriate Issue or PR pages)
Code
queued
into waiting
User Guide
UI
preparing
task icon