-
Notifications
You must be signed in to change notification settings - Fork 94
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Spawning parentless clock-xtriggered task #5572
Comments
We already have the case that trigger actually just queues a task and you need a second trigger to make it run immediately.
I quite like this because it avoids the need to remember to use a different command when dealing with a clock triggered task. |
See also cylc/cylc-doc#476 |
Hmmm, on reflection, there is a problem for my use case above, Going by your rules, a clock-triggered parent-less task should be queued to run if manually triggered, because it has no prerequisites, even if it is an abstract task in the future graph (i.e. not in The problem is I start the flow part way through the graph in a particular cycle, so none of these parent-less clock-triggered tasks get spawned at all. I want to spawn them manually into I guess the first rules would have to be:
As a consequence, to make a parent-less clock-triggered task queue immediately you will have to trigger it twice if abstract but only once if in On the other hand, we already need to understand the difference between waiting What do you think? |
Actually, that's similar to triggering unqueued vs queued tasks too. So maybe that's OK. |
Yes, sorry. What you describe is what I had in mind. It's just difficult to know the best way to describe this without referring to spawning and n=0 and without inventing new terminology (e.g "abstract task"!). The current help for |
I have used that terminology on and off, to distinguish a "concrete" task (which is represented by a task proxy object in the scheduler) from one that only exists in an abstract sense - somewhere ahead in the potentially infinite graph. But yes, it is frickn difficult to write clearly about this stuff. For users, I'm hoping |
I hate to through a spanner in the works here, but I can't say I'm especially fond of adding an extra layer to
Since the proposed |
I tend to agree that ideally "trigger" should mean "run now", end of story. But the fact is trigger does have this "layered" behaviour already - for queued tasks. And for the moment, we don't have an alternative place to put this. Also, although I didn't actually say it above, I have been assuming that:
However, in the interim ( Anyhow, it sounds as if you agree that we need the underlying capability. We just need to figure out the best place to put it. If we don't get
We need to be able to "trigger" any xtriggered task to start checking on its external condition now, rather than to run now, in order to set up future xtriggered tasks to run at the right time, if the workflow was not started in the normal way. |
That's not really an argument against this or any other functionality unless there is another way to do it that avoids any need to understand these concepts (whatever names we give them). That we haven't settled on the terminology doesn't necessarily imply that is possible to avoid the concepts altogether. Unlike in Cylc 7, the Cylc 8 scheduler task pool makes good intuitive sense as the "n=0 active window" on the graph (which only contains "active tasks", with some provisos on exactly what "active" means). "Spawning" now just refers to how a tasks gets into that window. Users have to understand what the n=0 window is, in order to understand what they are seeing in the UIs. But that is not IMO leakage of internal implementation, unless you think it merely implementation that we can't treat the entirety of an infinite graph equally all at once. (Isn't that a recent movie...?) |
@dpmatthews - Can I check my interpretation of this:
Would we expect the trigger command to lead to the spawning on 1001/foo &c...? |
Reported by @hjoliver on Element:
Consider a cycling graph with a parentless clock-xtriggered task foo at the top of each cycle. Currently (perhaps pending a future capability for clock triggers to spawn dependent tasks on demand):
At normal start-up, the first instance of foo gets spawned by the scheduler, then (having no parents to do so) it spawns future instances of itself.
However, when triggering a new flow, or when starting up with
--start-tasks
, at some other point in the graph, we likely need to arrange for the "next" instance of foo to be spawned as waiting on the clock-xtrigger. At the moment this can't be done (sincecylc spawn
was removed):The text was updated successfully, but these errors were encountered: