-
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
Surprising behaviour with families and multiple inheritance #2570
Comments
From the UX point of view, I think it can be considered a bug. This may or may not be easy to fix. I'll take a look soon. |
(I guess I forgot to comment on this at the time it was posted). I can see how this could be confusing to users, but what to do about it is not exactly clear to me. We use first-parents for visualization grouping (because that creates a linear tree) but a task is considered to be a member of all families that it inherits from. This can be sometimes be useful - e.g. technical settings for all tasks that go to a particular job host would typically not be in a first-parent family for visualization, but you might want to poll (say) all jobs on that host by targeting that family with the CLI. Possible solutions:
Option 2. is probably the best, if we don't go as far as 4. |
Actually, maybe we should go as far as 4. @cylc/core - what do you think? If we separate visualization from runtime inheritance, there will no confusion, no need to use "inherit = None" to prevent single parents beyond used for visualization, no need to use empty families just for visualization grouping. The visualization grouping setting could itself be inherited though, like everything else under runtime. |
For grouping tasks in suite visualisations I think parametrisation and sub-graphs make more sense though sadly Cylc functionality is not quite there yet. |
The concept of family needs a rethink, perhaps as part of #3304. |
@TomekTrzeciak has raised this problem again here: #3335 (comment) ... where he made an additional suggestion:
|
@TomekTrzeciak - just to be clear, you're suggesting there that we should check and warn (cylc-7) or fail (cylc-8) if any family is used both as a first and a second parent for different tasks? |
To recap:
On the other hand, it is sometimes useful to be able to operate on all members of a non first-parent family (e.g. all tasks that inherit settings for a particular job platform). |
My preferred solution (and I think @oliver-sanders agreed above) is:
And in the meantime, for Cylc 7, we can warn on the problematic cases as suggested by @TomekTrzeciak. |
Yes, although the solution you prefer might be even better, but it also has further ranging implications. I think on some level families and GUI groups will have to be considered jointly anyway, e.g., for task selection on the command line. |
If the suite definition has tasks which inherit from multiple families, the first family is used to group the tasks in gcylc. Unfortunately, this can lead to surprising (though not necessarily incorrect!) behaviour when manually changing the state of a family through gcylc.
Example:
suite definition:
This gives the following view in gcylc:
If changing the state of
FOO_FAMILY
, it would be reasonable to expect that the behaviour is the same as selecting all items beneath the family in the dropdown, and changing the state of those together - when the behaviour is actually to change the state of all tasks which inherit fromFOO_FAMILY
- ie:bar_task
inherits this state. I don't think this is wrong, but from a UX point of view (especially if the user is not familiar with the suite), it can be surprising and lead to unexpected results.The text was updated successfully, but these errors were encountered: