in the course of my model development, i frequently need to kill tasks and then re-trigger them. i’m just wondering why whenever i do this, the newly triggered task runs but with the ‘held’ sign on it? i would’ve thought that triggering a task would imply that it doesn’t want to be help any more?
In Cylc 8 any task - even running ones - can be “held”. It’s to do with the conceptual separation of task and job.
A held task will not submit a job to run when it becomes ready to submit. But a task can submit multiple jobs (by automatic retry, manual triggering, or new flows through the graph). So a held running task will not submit its next job unless released or manually triggered.
The connection with job kill is this:
If a task has retries configured for failure, you probably don’t want them to activate immediately if you forcibly kill it. So a killed tasks automatically gets held. In the unlikely event that you do want retries to go off in response to the job kill, just release the task.
ah nice, thanks for that.
just to be sure, in cylc speak, a job is an instance of a task, right?
so a task could be called
foo and the jobs are 01, 02, …, NN?
Well, strictly speaking you need cycle point in there as well, for cycling workflows.
foo has an instance in each cycle point
3/foo, etc. (for integer cycling; otherwise
Then, each task instance can submit zero or more jobs e.g.
(That hierarchy is reflected in the task ID and log directory too).
ah yeah of course, thanks for the extra info!