Skip to content

Commit d8d5d29

Browse files
committed
Some doc updates for 8.3.0.dev changes.
1 parent 5955662 commit d8d5d29

File tree

7 files changed

+175
-121
lines changed

7 files changed

+175
-121
lines changed

src/7-to-8/major-changes/compatibility-mode.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ The ``suite.rc`` filename triggers a backward compatibility mode in which:
3434
branching)
3535

3636
- only ``succeeded`` task outputs are :ref:`*required* <User Guide Required Outputs>`,
37-
meaning the scheduler will retain tasks that do not succeed as incomplete
37+
so the scheduler will retain all non-succeeded :term:`finished tasks <finished task>`
38+
in the :term:`n=0 window <n-window>`.
3839

3940
- (in Cylc 8, **all** outputs are *required* unless marked as
4041
:ref:`*optional* <User Guide Optional Outputs>` by the new ``?`` syntax)

src/7-to-8/summary.rst

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -121,14 +121,16 @@ Optional and Required Task Outputs
121121
* User Guide::ref:`User Guide Optional Outputs`
122122

123123
By default, all Cylc 8 tasks are required to succeed - i.e., success is
124-
a :term:`required output`. Otherwise they will be marked
125-
as :term:`incomplete tasks<incomplete task>` needing user intervention.
126-
In a workflow with incomplete tasks, if there is nothing left to do, the
127-
scheduler will :term:`stall` rather than shut down.
128-
129-
Alternatively, task outputs can be marked as :term:`optional <optional output>`.
130-
This supports :term:`graph branching` and it allows the scheduler to
131-
correctly diagnose :term:`workflow completion`.
124+
a :term:`required output`. Tasks that :term:`finish <finished task>`
125+
without completing their required outputs get retained in the
126+
:term:`n=0 window <n-window>` pending user intervention, which
127+
will :term:`stall` the workflow.
128+
129+
Alternatively, outputs can be marked as :term:`optional <optional output>`,
130+
which allows :term:`optional graph branching <graph branching>`.
131+
132+
This allows the scheduler to correctly diagnose :term:`workflow completion`.
133+
132134

133135
Platform Awareness
134136
------------------

src/glossary.rst

Lines changed: 97 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,10 @@ Glossary
7070

7171
active
7272
active task
73+
active tasks
7374
An active task is a task which is near ready to run, in the process of
74-
running, or which requires user intervention.
75+
running, or which requires user intervention. These are all the tasks
76+
being actively managed by the scheduler at this point in the run.
7577

7678
Active tasks are:
7779

@@ -84,9 +86,9 @@ Glossary
8486

8587
- ``preparing`` tasks - i.e. tasks in the process of submitting jobs
8688
- ``submitted`` and ``running`` tasks - i.e. those with active jobs
87-
- :term: `incomplete` tasks which have completed without satisfying all of their
88-
:term:`required outputs <required output>`, (e.g. a failed task
89-
where success was required).
89+
- tasks that finished without completing their
90+
:term:`required outputs <required output>`
91+
(e.g. a task failed where success was required).
9092

9193
Active tasks are in the ``n=0`` :term:`window <n-window>` which means they
9294
will always be displayed in the GUI and Tui.
@@ -96,18 +98,22 @@ Glossary
9698

9799

98100
active cycle
101+
active cycle point
99102
A cycle is active if it contains any :term:`active tasks <active task>`.
100103

101104
Active cycles are counted towards the :term:`runahead limit`.
102105

103106

107+
active window
108+
The active window is the ``n=0`` core of the :term:`n-window`.
109+
It contains the current :term:`active tasks`.
110+
111+
104112
window
105113
n-window
106-
active window
107-
active task pool
108114
This is a :term:`graph`-based window or view of the workflow at runtime,
109-
including tasks out to ``n`` graph edges from current :term:`active
110-
tasks<active task>`. The *active window* is ``n=0``.
115+
including tasks out to ``n`` graph edges from current
116+
:term:`active tasks<active task>`. The active tasks are in ``n=0``.
111117

112118
.. seealso::
113119

@@ -210,8 +216,8 @@ Glossary
210216
queue
211217
internal queue
212218
Internal queues (so called to distinguish them from external batch
213-
queueing systems) allow you to limit how many :term:`tasks <task>` can be
214-
active (submitted or running) at once, across defined groups of tasks.
219+
queueing systems) limit how many :term:`jobs <job>` can be
220+
active at once, across defined groups of tasks.
215221

216222
Use queues prevent large or busy workflows from swamping their
217223
:term:`job platforms <job platform>` with too many jobs at once.
@@ -559,6 +565,23 @@ Glossary
559565
* :term:`exact datetime unit`
560566

561567

568+
clock expire
569+
expired task
570+
Tasks in :term:`datetime cycling` workflows can be configured to *expire*
571+
if the :term:`wallclock time` exceeds some offset from the cycle point.
572+
573+
Expired is a :term:`final task status` - an expired task will not run
574+
even if its prerequisites get satisfied.
575+
576+
The associated ``:expire`` :term:`output <task output>` can be used to
577+
trigger other tasks. It must be marked as an :term:`optional output`,
578+
i.e. expiry cannot be :term:`required <required output>`.
579+
580+
.. seealso::
581+
582+
* :ref:`Cylc User Guide <ClockExpireTasks>`
583+
584+
562585
clock trigger
563586
Clock triggers connect cycle points to the :term:`wallclock time`, in
564587
:term:`datetime cycling` workflows. Tasks that depend on a clock trigger
@@ -839,8 +862,9 @@ Glossary
839862

840863

841864
job
842-
Jobs are real processes that perform :term:`tasks <task>` in a
843-
:term:`workflow`. In Cylc, they are implemented by :term:`job scripts
865+
Jobs are the real processes that run on a computer to realise
866+
:term:`tasks <task>` in a :term:`workflow`. In Cylc, they are
867+
implemented by :term:`job scripts
844868
<job script>` prepared by the :term:`scheduler`.
845869

846870

@@ -1195,8 +1219,9 @@ Glossary
11951219

11961220
:ref:`RemoteInit` will be redone for each job platform, when the first job is submitted there after a reload.
11971221

1198-
Any :term:`task` that is active at reload will continue with its
1199-
pre-reload configuration. It's next instance (at the next cycle point)
1222+
Any :term:`task` that is :term:`active <active task>` at reload
1223+
will continue with its pre-reload configuration.
1224+
The next instance of the task (at the next cycle point)
12001225
will adopt the new configuration.
12011226

12021227
Reloading changes is safe providing they don't affect the
@@ -1346,10 +1371,18 @@ Glossary
13461371
* :ref:`Cylc User Guide <FamilyTriggers>`
13471372

13481373

1374+
final task status
1375+
finished task
1376+
A finished task has achieved a final task status, i.e., expired,
1377+
submit-failed, succeeded, or failed. Finished tasks cannot change
1378+
state again except by manual intervention (e.g. by retriggering).
1379+
1380+
13491381
standard output
13501382
Every :term:`task` has a set of standard :term:`outputs <task output>`
13511383
that trigger :term:`task state` changes:
13521384

1385+
- ``:expired```
13531386
- ``:submitted``, or ``:submit-failed``
13541387
- ``:started``
13551388
- ``:succeeded``, or ``:failed``
@@ -1358,8 +1391,7 @@ Glossary
13581391
task output
13591392
Task outputs mark the progression of a :term:`task` from waiting (for
13601393
prerequisites to be satisfied) through to success or failure at run
1361-
time. Downstream tasks can trigger off of the outputs of other tasks, as
1362-
determined by the :term:`graph`.
1394+
time. Tasks can trigger off upstream task outputs in the :term:`graph`.
13631395

13641396
Outputs are written as ``task-name:output`` in the :term:`graph`, and can
13651397
be :term:`required <required output>` or :term:`optional <optional output>`.
@@ -1381,6 +1413,30 @@ Glossary
13811413
foo => bar # means foo:succeeded => bar
13821414
13831415
1416+
output completion
1417+
output completion condition
1418+
A task's outputs are *complete* if its *output completion condition*
1419+
is satisfied.
1420+
1421+
The completion condition can be defined by the user, or otherwise
1422+
it is automatically generated according to the rules:
1423+
1424+
- All :term:`required outputs <required output>` (referenced in the graph)
1425+
must be completed.
1426+
- Or, if success is optional, then the outputs are complete if it fails.
1427+
- Or, if submission is optional, then the outputs are complete if it
1428+
submit-fails.
1429+
- Or, if expiry is optional, then the outputs are complete if it expires.
1430+
1431+
Tasks that :term:`finish <finished task>` with
1432+
:term:`complete outputs <output completion>`
1433+
have done their job, allowing the workflow to move on.
1434+
1435+
Tasks that finish with :term:`incomplete outputs <output completion>`
1436+
are retained in :term:`n=0 <n-window>` pending user
1437+
intervention, and will :term:`stall` the workflow.
1438+
1439+
13841440
dependence
13851441
dependency
13861442
Dependencies in the :term:`graph` show how :term:`tasks <task>` depend on
@@ -1510,38 +1566,26 @@ Glossary
15101566
required output
15111567
expected output
15121568
Task outputs that are not marked as :term:`optional <optional output>`
1513-
in the :term:`graph` are required to be completed at runtime. If not, the
1514-
:term:`scheduler` retains the task as :term:`incomplete` pending user
1515-
intervention.
1569+
in the :term:`graph` must be completed at runtime. If a task
1570+
:term:`finishes <finished task>` without completing its required
1571+
outputs, the :term:`scheduler` will keep it in the
1572+
:term:`n=0 window <n-window>` pending user intervention.
15161573

15171574
.. seealso::
15181575

15191576
* :ref:`Cylc User Guide <required outputs>`
15201577

15211578

1522-
incomplete
1523-
incomplete task
1524-
Incomplete tasks are :term:`tasks <task>` that finish (succeed or fail)
1525-
without completing all :term:`required outputs <required output>`. They
1526-
are retained by the :term:`scheduler` in the :term:`n=0 window
1527-
<n-window>` pending user intervention, and will cause a :term:`stall`
1528-
if there are no more tasks to run.
1529-
1530-
.. seealso::
1531-
1532-
* :term:`optional output`
1533-
* :ref:`Cylc User Guide <incomplete tasks>`
1534-
1535-
15361579
stall
15371580
stalled workflow
15381581
stalled state
1539-
If there are no more tasks to run according to the :term:`graph`, but
1540-
:term:`incomplete tasks <incomplete task>` are present, the
1541-
:term:`scheduler` will stall and stay up for a time instead of
1542-
shutting down with the workflow :term:`complete <workflow completion>`.
1582+
In a stalled workflow, there is nothing more the scheduler can do,
1583+
but it stays up for a while awaiting manual intervention because
1584+
the presence of :term:`incomplete <output completion>` tasks in
1585+
the :term:`n=0 window <n-window>` implies that the workflow has not successfully
1586+
run to :term:`completion <workflow completion>`.
15431587

1544-
Stalls are usually caused by unexpected task failures:
1588+
Stalls are usually, but not always, caused by unexpected task failures:
15451589

15461590
.. digraph:: Example
15471591
:align: center
@@ -1556,16 +1600,16 @@ Glossary
15561600
run, but ``bar:fail`` was not marked as an :term:`optional output`.
15571601

15581602
User intervention is required to fix a stall, e.g. by retriggering
1559-
incomplete tasks after fixing the problems that caused them to fail.
1603+
tasks after fixing the problems that caused them to fail.
15601604

15611605

15621606
suicide trigger
1563-
Suicide triggers remove :term:`tasks <task>` from the :term:`scheduler's
1564-
<scheduler>` active (:term:`n=0 <n-window>`) window at runtime.
1607+
Suicide triggers remove :term:`tasks <task>` from the
1608+
:term:`n=0 window <n-window>` at runtime.
15651609

15661610
They are denoted by exclamation marks, and are triggered like normal
15671611
dependencies. For instance, the following suicide trigger will remove the
1568-
task ``bar`` from the active window if ``foo`` succeeds:
1612+
task ``bar`` if ``foo`` succeeds:
15691613

15701614
.. code-block:: cylc-graph
15711615
@@ -1649,15 +1693,15 @@ Glossary
16491693

16501694

16511695
flow front
1652-
Active (submitted or running) tasks, i.e. tasks in the ``n=0``
1653-
:term:`active window`, with a common :term:`flow number` comprise the
1654-
active front of that flow.
1696+
:term:`Active tasks <active tasks>`, i.e. tasks in the
1697+
:term:`n=0 window <n-window>`, with a common :term:`flow number`
1698+
comprise the active front of the flow.
16551699

16561700

16571701
flow merge
16581702
When a :term:`flow` tries to spawn a child task and finds an instance
16591703
with the same task ID already exists in the ``n=0`` :term:`active
1660-
window`, the one active task will carry both flow numbers forward.
1704+
window`, one merged task will carry both flow numbers forward.
16611705

16621706

16631707
event
@@ -1695,11 +1739,11 @@ Glossary
16951739
runahead limit
16961740
runahead
16971741
In a :term:`cycling workflow`, the runahead limit determines how far
1698-
ahead of the oldest :ref:`active cycle point` the workflow is permitted
1742+
ahead of the oldest :term:`active cycle point` the workflow is permitted
16991743
to run.
17001744

17011745
The "oldest active cycle point" is the first cycle in the workflow to contain
1702-
any :term:`active tasks <active task>` (e.g. running tasks).
1746+
any :term:`active tasks` (e.g. running tasks).
17031747

17041748
.. seealso::
17051749

@@ -1709,12 +1753,12 @@ Glossary
17091753

17101754

17111755
workflow completion
1712-
A workflow is deemed complete if there are no more tasks to run,
1713-
according to the graph, and there are no :term:`incomplete task
1714-
<incomplete task>` present.
1756+
A workflow is complete if there are no more tasks to run according
1757+
to the graph, and there are no :term:`incomplete <output completion>`
1758+
tasks present in the :term:`n=0 window <n-window>`.
17151759

1716-
If the workflow is complete, the scheduler will automatically :term:`shut
1717-
down <shutdown>`.
1760+
If the workflow is complete, the scheduler will automatically
1761+
:term:`shut down <shutdown>`.
17181762

17191763
If there are no more tasks to run, but there are incomplete tasks
17201764
present, the scheduler will :term:`stall` rather than shut down.

src/user-guide/running-workflows/reflow.rst

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -128,38 +128,26 @@ Special Case: Triggering ``n=0`` Tasks
128128

129129
- Triggering a task with a submitted or running job has no effect
130130
(it is already triggered).
131-
- Triggering other :term:`active tasks <active task>` e.g. (a waiting
132-
task which is held) queues it to run in the same flow.
133-
- Triggering an :term:`incomplete task` queues it to re-run in the same flow.
131+
- Triggering other :term:`active tasks <active task>` (including
132+
:term:`incomplete <output completion>`
133+
:term:`finished <finished task>` tasks) queues them to run in the same flow.
134134

135135

136136
.. _flow-merging:
137137

138138
Flow Merging in ``n=0``
139139
-----------------------
140140

141-
If a task spawning into the ``n=0`` :term:`window` finds another instance
142-
of itself already there (i.e., same name and cycle point, different flow
143-
number) a single instance will carry both (sets of) flow numbers forward from
144-
that point. Downstream tasks belong to both flows.
141+
If a task spawning into the :term:`n=0 window <n-window>` finds another instance
142+
of itself (same task ID) already there, the two will merge and carry both
143+
(sets of) flow numbers forward. Downstream tasks will belong to both flows.
145144

146-
Flow merging in ``n=0`` means flows are not completely independent. One flow
147-
might not be able to entirely overtake another because one or more of its tasks
148-
might merge in ``n=0``. Merging is necessary while task IDs - and associated
149-
log directory paths etc. - do not incorporate flow numbers, because task IDs
150-
must be unique in the :term:`active task pool`.
145+
Flow merging is necessary because :term:`active <active task>` task IDs
146+
must be unique.
151147

152-
Merging with Incomplete tasks
153-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
154-
155-
:term:`Incomplete<incomplete>` tasks are retained in the active window in
156-
expectation of retriggering to complete :term:`required outputs<required
157-
output>` and continue their flow.
158-
159-
If another flow encounters an incomplete task (i.e. if another instance of the
160-
same task collides with it in the ``n=0`` :term:`active window`) the task will
161-
run again and carry both flow numbers forward if it successfully completes its
162-
required outputs.
148+
If original task instance is :term:`finished <finished task>` but
149+
:term:`incomplete <output completion>` the merged task will be reset to
150+
run again without manual intervention.
163151

164152

165153
Stopping Flows
@@ -168,7 +156,7 @@ Stopping Flows
168156
By default, ``cylc stop`` halts the workflow and shuts the scheduler down.
169157

170158
It can also stop specific flows: ``cylc stop --flow=N`` removes the flow number
171-
``N`` from tasks in the :term:`active task pool`. Tasks that have no flow
159+
``N`` from :term:`active tasks <active task>`. Tasks that have no flow
172160
numbers left as a result do not spawn children at all. If there are no active
173161
flows left, the scheduler shuts down.
174162

0 commit comments

Comments
 (0)