Selectively trigger certain tasks in simulation mode?

Hi there,

I’m using cylc 8 for this but I don’t think it’s a migration issue per se so am posting in the general support channel.

I’m working with a (for me) complex workflow and would like to be able to selectively trigger tasks to explore precisely how the flow works. Just to emphasise, this is purely a simulation thing and wouldn’t make any sense in a live workflow!

For example in the following paused graph, let’s say that I want to hold the simulated workflow and then trigger the circled postproc_nemo_grid task, followed by a downstream one and so forth.

I’ve tried ‘releasing’ and ‘triggering’ the tasks but it seems I can only examine the workflow’s progress by ‘playing’ the whole workflow?

Is this right?

Thanks,

Hi,

When the workflow is paused, no new job submissions will be made (either in live or simulation modes). So triggering tasks will only take effect when the workflow is “unpaused”.

If you want to selectively run some tasks but not others without the workflow advancing as it normally would, try using “hold” and “release”:

# hold all tasks
$ cylc hold '<workflow-id>//*'

# trigger selected task(s)
$ cylc trigger '<workflow-id>//<cycle>/<task>'

Note that holding “all” tasks doesn’t hold tasks which do not yet exist so you might want to run that hold command again after triggering if you want to prevent the workflow running on from these triggered tasks.

Explanation of play/pause vs hold/release:

  • Play and pause are a workflow thing. It’s a global status which applies to the scheduler itself.
  • Hold and release are a task thing. It’s a local status which applies to a single task.
1 Like

that’s brilliant @oliver.sanders, exactly what i wanted.

thanks! :smile: