Cylc8: Triggering tasks before initial cycle time

[Cylc 8.1.4]

Hi,

Is it possible to trigger a task in a new flow prior to the inital cycle time?

I have started my workflow at 12z for a particular day to get around the issue of expired tasks stalling the suite (being addressed here I believe: Fix expire triggers. by hjoliver · Pull Request #5412 · cylc/cylc-flow (github.com).

However, I want manually trigger a few other tasks at an early cycle time prior to the initial cycle time (as I couldn’t start the suite at that cycle point).

I can do this in cylc7 (I think!) by ticking the box that says “don’t check cycle time is valid” when inserting a task. However, in cylc8 the cylc trigger command does not seem to have this functionality and the workflow log says that my cycle time is invalid (because it is before my initial cycle time I assume).

Is there a way around this? I set --flow=new thinking this would start a new independent flow, but that doesn’t seem to have helped.

Hi,

Wow, I had no idea you could do that in Cylc 7! I think the reason that worked is because at Cylc 7 each task was responsible for spawning its successors.

With Cylc 8 we construct a true moving window over the workflow without the need for proxies or spawning. I don’t think it is possible to trigger tasks before the initial cycle time as the task would not fit onto the recurrences which Cylc uses to generate its moving window. The “–flow” argument won’t work around this.

For now the best way to get around the expiry problem is probably to cylc set-outputs on the task you with to expire, then cylc remove it. A bit clunky and awkward to automate, apologies. We’re looking into the expiry problem, however, it is a little tricky as the meaning of “expire” has changed somewhat as a result of Cylc’s algorithm change so we need to make sure what we put back in addresses the Cylc 7 use cases.

1 Like

Thanks for the advice @oliver.sanders .
I tried set-outputs and remove on the expired tasks, but this seemed to confuse the workflow (and me) to the point where it’s all snarled up.

I’ll try again with a longer runahead limit (this was your advice originally regarding the expired task problem I believe).

Perhaps I am asking for trouble with an hourly task that expires 40 mins after the wall clock. Maybe I should just throw it in a cron job!

Me neither!

The reason you can’t do this is that in general it doesn’t make sense to run a task at a pre-initial cycle point. The initial point is what defines the start of the graph structure. There may be special behaviour at the first point(s), and several graph sections with different cycle bounds that all integrate to make the final graph, so (in general, at least) it may not be at all clear what’s supposed to happen downstream of such an out-of-graph-bounds task.

1 Like

@ukmo-ccbunney - note that (temporarily, we’re in the process of unifying triggering-related commands and their flow implications) cylc set-outputs has some caveats: Continuing a run that completed - #4 by hilary.j.oliver

1 Like