-
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
easier way to select cycle start tasks #5416
Comments
We can also start from a specified cycle point, or from specified tasks in the graph. But only for a first run from scratch, not a restart. |
I have another possible use case, for restarting the same workflow run from a different point (although not the start of the graph). Consider a DR situation with some workflows that need to fail-over and fail-back between two platforms. To avoid housekeeping or adapting the system to new run directories each time it may be convenient to restart the same workflow runs each time you fail over, but from a new point in the graph corresponding to the latest sync point from the other platform (not from wherever the workflow got to last to it ran on this platform). (On the other hand, housekeeping with |
This could also apply when triggering a new flow e.g: # start a new flow at a specified start cycle e.g:
# * I changed the configuration and want to re-run everything from a specified cycle
# onwards...
# * I fixed the data and want to rerun the workflow from that cycle on...
#
# ...but I don't want to specify all the cycle-start tasks because the graph is complicated
# or I didn't write it, or I don't want to manually specify all of the start tasks.
cylc trigger --flow=new --start-cp=<cycle> <workflow> I've just received a use case for something like: # start a new flow at a specified cycle which stops at a specified cycle e.g:
# * I changed the configuration and want to re-run a specified cycle range.
# * I changed the data and want to re-run a specified cycle range.
cylc trigger --flow=new --start-cp=<cycle1> --stop-cp=<cycle2> <workflow> |
Updated the issue title to reflect the more general problem of selecting the cycle start tasks (i.e. the default cold-start logic). This functionality could relate to:
At a push it could also relate to:
|
Along with selecting cycle-start tasks, there are some use cases for the similar problem of selecting family-start tasks. E.G. I want to trigger a new flow starting from this family. At present we can do It's exactly the same logic, cycles and families are essentially both groupings of tasks and the solution is the same for both cases i.e. iterate over tasks in the group to search for parentless ones applying the pre-initial condition (i.e. ignoring any edges entering the group from outside*). I think this might be especially useful for rose-stem use cases where users may want to trigger a rebuild for a certain platform, and re-run everything downstream. This is not as simple as triggering a single task. Generalising this to the extreme, we could also consider applying the same logic to arbitrary groups i.e. globs e.g. |
Huh, definitely not the way it should work. |
To proceed we need a proposal for how this functionality is going to be exposed on the CLI / in the schema which considers the use cases mentioned above. See also this cylc-admin proposal point (9): https://github.com/cylc/cylc-admin/blob/master/docs/proposal-interventions.md#9-i-want-to-run-a-cycle-of-tasks-ahead-or-behind-of-the-flow |
We could look at consolidating the Possibly add an alias to the |
Note, possible conflict with #5763 which would like |
In Cylc 8 we no longer support the behaviour where restart deleted the previous database, effectively running an implicit E.G. if this command is run on a workflow which has already run and been stopped: $ cylc play --start-tasks='<cycle>/*' It would actually:
So one command, but two things. IMO it's simpler if It might be conceptually simpler to expose this functionality through $ # insert the start tasks from <cycle> but don't trigger them
$ # i.e. allow xtriggers to hold them back as appropriate
$ cylc set <cycle> --pre=all [--flow=new # if re-running tasks] Which is kinda similar to |
When a workflow is first run Cylc uses the following logic to determine the tasks which are initially added to the pool:
If we want to start from the beginning in a new flow, say because the workflow has completed and we want to re-run it, Cylc does not currently poses any switches to allow the user to replicate this initial startup logic. Instead the user must work out what tasks they want to (re)start the workflow with and manually specify them as start-tasks.
What we could do with is something with functionality along the lines of:
The text was updated successfully, but these errors were encountered: