-
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
cylc set-outputs
: use cases and trigger compatibility
#4727
Comments
Use CasesOriginal (above):
Other:
These may need the target task to be recorded in the DB as "spawned already in this flow" for future flow merge purposes. (And the "set" outputs should be recorded as complete too). |
Here are my thoughts:
|
I've discussed this with @oliver-sanders and we'd like to propose not supporting
|
Yeah |
I've just come back to this after a user reported that The suggestions above all fit with my conception of how it should work, at this stage. I should probably crack on with implementation, as the current state of the command is not good. Is there still a desire to change the command name? "Set-outputs" is not pretty, but it is specific and descriptive. |
@hjoliver - I've been investigating a problem one of our early adopters has been having with some flaky tasks, that is:
Using
Where foo is a task that fails in about 1% of cases. User would like to manually tell the workflow to carry on regardless but I cannot find a combination or remove/set outputs where the workflow doesn't stall with
And thus require all downstream tasks to be manually triggered. |
@wxtim - not sure I understand the problem. Can we not just do this?:
|
That seems like a different problem?
If they want to manually intervene in advance to make the flow go one way and not the other at some future point, I'm not sure that's a reasonable request. Manual intervention is mainly intended for responding to unexpected events that have occurred already. This suggest to me that the graph is wrong, given the way the tasks are behaving, and so the right solution is to change the graph (via reload or restart) or change the task definitions (via reload or restart, or broadcast <--- which is an advance manual intervention, I guess). |
@dpmatthews - I've started working on this, so thinking about some of the details in more depth.
Not sure about this. Consider |
That's not necessary for our canonical example of this: Above, to set up the orange flow, I can do If you mean "without starting another flow off of the same output" (or off another of the "implied" outputs, if we do that): Above, setting But delayed spawning as currently conceived won't prevent that. Our current flow-wait mechanism stores completed outputs of a task in the DB, and spawns them when the flow catches up to that task. Here, To set up the intended flow from (I think this makes good sense. To spawn multiple tasks off of a single output, use |
This procedure is fine - what I think I'm suggesting is that "set outputs" doesn't work as an alternative to this, which it sounds like it ought to be - Were I a user my expectation for set outputs to succeeded would be equivalent to this. It's not. I thing "trigger output" describes what seems to be happening better. |
From scraping the above, these are the use cases for consideration:
Whether these use cases are to be solved by Cases (1) & (2) which weren't well catered to by Cylc 7 are covered by the current The Cylc 7 case (3) and the new case (4) are not covered very nicely because:
|
I know how to proceed here, will try to write it up succinctly for review soon. Just a couple of comments for now: The scheduler "task pool" is, to all intents and purposes, gone as a user-facing concept. What we have now is Unfortunately, however:
|
That's not true BTW. The db records if a task was spawned already in the current flow. |
Superseded by #5642 |
Consider
cylc set-outputs
in light of final agreed behaviour ofcylc trigger
as per #4686 with respect to flows in particular.The command causes spawning downstream of specified task outputs. The spawned children are:
--flow=
, will flow on as the specified flowThe original use cases in mind during spawn-on-demand implementation were focused on the spawned children NOT on the targeted task (the owner of the outputs) itself:
Things to consider:
cylc spawn
)cylc trigger
, and implications for the targeted task (the owner of the outputs):The text was updated successfully, but these errors were encountered: