I have a question related to this problem, and your proposed solution but I don’t know if it is better to start a new thread or continue here. Sorry if this is poor etiquette on my part.
I encountered this while testing a large workflow and recreated the issue I had in a very simple graph, but the scenario is I am trying to test a task in the middle of my graph without expending the resources from the triggering tasks. I simply want them marked as succeeded and to test “task_c” and continue on in my workflow. I did extend my graph to 3 in order to make other tasks visible in the GUI. I held the first and 4th task to avoid wasting resources, and I trigger “task_c”; it succeeded. My initial thought like @andy.smith, was to set-output of task_a and task_b to succeeded. This only triggered the downstream tasks. I found this thread and tried removing the tasks as suggested using the GUI remove option from the menu and then cylc remove my_workflow//20240220T0000Z/task_c
, but this also seems to have some nuance as it will not work on a task that is not “active” in the GUI.
When using the same command for “task_a” it cleared, but task_b remained. I assume because of my graph extent being raised. Just the same I marked it to be removed, but got no response in the tree-view. When the graph extent was lowered task_b disappeared (or so I thought), but this wasn’t flagged as and optional(?) task and eventually stalled my suite.
Here is a quick breakdown of my simplified flow.cylc:
[scheduling]
initial cycle point = 20240220T0000Z
[[xtriggers]]
start = wall_clock()
[[graph]]
T00, T06, T12, T18 = """
@start => task_a => task_b => task_c => task_d => task_e => task_f & task_g
"""
[runtime]
[[task_a, task_b, task_c, task_d, task_e, task_f, task_g]]
script = """
cylc message "I'm done."
"""
Screenshot of the workflow in tree-view after set-output failed to remove task_b and re-triggered task_c:
Screenshot of log after trying to use cylc remove command to take out task_b:
As I stated removing task_a did actually remove the task from my graph, and when the extent was reduced this removed/hid task_b from my tree-view as well. However when I repeated these steps of triggering task_c and removing task_a in subsequent cycles my graph stopped loading new cycles.
Screenshot of last cycle: with now new cycles loading:
So my question is, What am I doing wrong? Can I remove these tasks without breaking my workflow? This situation may not be totally practical, but if I ever did switch my filesystems to a backup, and was trying to restart mid-cycle without wasting resources to rerun the apps that already finished, is that possible?
Just to see what happens, I released my last cycle to make sure my holding tasks wasn’t doing anything odd to prevent cycles from loading, but that just triggered the remaining tasks and stopped my workflow. The workflow’s log states: