Task Matching
Various Cylc commands (e.g. cylc trigger, cylc set and cylc hold) allow us to select the tasks we want to operate on using cycle points, family names or globs, e.g:
# trigger active tasks in cycle "2000"
cylc trigger workflow//2000
# trigger active tasks in "FAMILY" in cycle "2000"
cylc trigger workflow//2000/FAMILY
# trigger all tasks in cycle "2000" with names starting with "foo" cylc trigger workflow//2000/foo*
However, prior to 8.6 family names and globs would only match active tasks. So, if you attempted to hold a family of tasks, Cylc would only hold the members of the family which were active at the time.
As of Cylc 8.6.0, this restriction has been lifted, so for example, holding a family will now hold all tasks within the family, irrespective of whether they are active or not.
# hold all tasks in "FAMILY" at cycle "2000"
cylc hold workflow//2000/FAMILY
# re-run all tasks in cycle "2000" (in order)
cylc trigger workflow//2000
# mark all tasks beginning with "foo" in cycle "2000" as "succeeded"
cylc set workflow//2000/foo* --out=succeeded
Because Cylc workflows can be infinite, if a cycle includes a “glob” pattern (e.g. *), this will only match active cycles (any cycle which contains at least one active task), e.g:
# remove the task "foo" from all active cycles of the workflow
cylc remove workflow//*/foo
# release all tasks in "FAMILY" in all active cycles of the workflow cylc
release workflow//*/FAMILY
This (combined with Triggering Multiple Tasks) makes Cylc 7 “reset to waiting” use cases much easier: