The premise is that at each cycle tasks a, b and c will run in sequence. If any of them fail then I need the whole chain to fail nicely and disappear so that it does not cause issues with the runahead limit. It is okay for the tasks to fail if that is what happens, but the suite needs to be able to continue. The housekeeping task is only triggered off the a task as that is the only task that is guaranteed to have run.
I am trying to work out how to best migrate this to cylc8 as the above does not validate:
GraphParseError: Opposite outputs b:failed and b:succeeded must both be optional if both are used
Blindly putting “?” after all the a, b, and c tasks (except the a:finish) validates but with the warning
WARNING - 4 suicide triggers detected. These are rarely needed in Cylc 8 - have you upgraded from Cylc 7 syntax?
Is there any way of implementing this workflow with optional outputs and no suicide triggers?
I had been trying a lot of variations, but hadn’t managed to fall on that one! Excellent to know that this does indeed work and it is a great simplification.
I still have one concern though. I have set up a workflow with this graph and have forced task b to fail. When I open cylc gui all the cycles still remain with task c in a waiting state. Is this expected behaviour?
Yes, the Cylc 8 UIs show (by default) active tasks, plus what comes next in the graph. Your c tasks are shown as waiting because they are next in the graph, but they are not ready to run yet (because they will only trigger if b succeeds).
Apologies @paulearnshaw - that was not a well-considered response! The failed tasks (1 per cycle) should indeed not be piling in up the GUI like that, given that success of b is optional according to your graph.
Investigating…
… yep, seems to be a bug in the datastore that feeds the UI. In which case, thanks for the bug report!