Skip to content
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

xtriggers: tree view and beyond #331

Open
oliver-sanders opened this issue Dec 15, 2019 · 17 comments
Open

xtriggers: tree view and beyond #331

oliver-sanders opened this issue Dec 15, 2019 · 17 comments
Labels
Milestone

Comments

@oliver-sanders
Copy link
Member

oliver-sanders commented Dec 15, 2019

Add Xtriggers to other views?

Issue #131 covers Xtriggers in the Graph View.

If the Queue and Retry states are removed and transformed into Xtriggers then these states will become invisible in the Tree view (and others).

xtriggers-tree

Pull requests welcome!

@oliver-sanders oliver-sanders added question Flag this as a question for the next Cylc project meeting. design labels Dec 15, 2019
@oliver-sanders oliver-sanders added this to the 1.0 milestone Dec 15, 2019
@hjoliver
Copy link
Member

I vote option 2, because:

A waiting task that is not "pending" or "submitted" must be waiting on something, so (a) no need to explicitly signify this at the top level, but (b) you should be able to expand the line to see exactly what it is waiting on:

  • clock trigger (normal, or retry)
  • internal queue
  • xtrigger
  • task prerequisites - we can show these here too, in the tree view!

@oliver-sanders
Copy link
Member Author

BTW I vote option 2 as well, it's much neater and consistent with the idea that Xtriggers are "just another dependency".

Playing devil's advocate: we put the job icon in the task node to convey the important information without having to unfold, seems somewhat unbalanced to not do the same for the Xtrigger.

@hjoliver
Copy link
Member

hjoliver commented Dec 16, 2019

Playing devil's advocate: we put the job icon in the task node to convey the important information without having to unfold, seems somewhat unbalanced to not do the same for the Xtrigger.

Jobs are special, being "real" entities, not just workflow abstractions.

For waiting tasks, the "waiting" task icon is the important top-level information. We just need to expand the line (or do something to reveal extra information) to find out the detail of why it is waiting.

In other words, to my mind, jobs are super-important, whereas xtriggers etc. and just the detail of why a task is still waiting.

@kinow
Copy link
Member

kinow commented Dec 16, 2019

In other words, to my mind, jobs are super-important, whereas xtriggers etc. and just the detail of why a task is still waiting.

I was going to ask if users wouldn't want to see information on xtriggers, as tasks are collapsed by default. But the paragraph above answers my question.

@kinow
Copy link
Member

kinow commented Dec 16, 2019

Between option 1 and 2, I prefer option 2. For me the xtrigger in option 2 looks like a job, or another entity with similar idea.

But I thought it would actually qualify the task/job instead? It looks strange to me, but it's only because I got used to the existing icons.

@hjoliver
Copy link
Member

task prerequisites - we can show these here too, in the tree view!

Probably a single line for task prerequisites (task dependencies) which you click on to see the n=1 graph around the task (not necessarily in the graph view)... or pop-up a list of text prerequisites as now.

@hjoliver
Copy link
Member

@kinow - we're open to other ideas too, if you can think of a better way (@oliver-sanders said above, "option 1 or 2 ... or something else?"

The issue is, users need to be able to find out what a task is still waiting on, which can be any of the things listed above (clock triggers, xtriggers, etc.)

@hjoliver
Copy link
Member

Option 1 is not good if we need to be able to show multiple dependencies, not just retries as in the diagram above.

@hjoliver
Copy link
Member

hjoliver commented Dec 16, 2019

But I thought it would actually qualify the task/job instead?

You can think of all these as qualifiers on the task waiting state, but we still have to figure out how to display them cleanly.

@oliver-sanders
Copy link
Member Author

oliver-sanders commented Dec 16, 2019

we're open to other ideas too

Always open to ideas BTW, whether it says "other ideas" or not!

@oliver-sanders
Copy link
Member Author

Option 1 is not good if we need to be able to show multiple dependencies, not just retries as in the diagram above.

Another issue with option 1 is what to do when we have multiple Xtriggers. If a task has a wallclock trigger and belongs to multiple queues (which isn't actually that rare) it's going to be a mess.

@kinow
Copy link
Member

kinow commented Dec 16, 2019

Option 1 is not good if we need to be able to show multiple dependencies, not just retries as in the diagram above.

Another issue with option 1 is what to do when we have multiple Xtriggers. If a task has a wallclock trigger and belongs to multiple queues (which isn't actually that rare) it's going to be a mess.

Oh, I was going to write about badges on icons - I think someone suggested that before. But it wouldn't be possible to use this approach with multiple xtriggers.

Maybe we could have queue/xtrigger/etc icons to the right of the task name? Displaying some more info on the mouse over / touch tap?

@hjoliver
Copy link
Member

Oh, I was going to write about badges on icons

That was one of my suggestions originally, I think. But it would be difficult with multiple "(x)triggers" - especially now I realised we should include task dependencies in this. There's no point in having a single badge to represent "one or more (x)triggers" because - as I said above - if a task is still waiting that in itself implies at least one unsatisfied trigger.

@oliver-sanders
Copy link
Member Author

oliver-sanders commented Feb 10, 2020

[cylc-con-2020]

Go for a mixture of options (1) and (2).

  • Use a generic icon into the task row to show if the task is waiting on any xtrigger.
  • List the xtriggers individually above the jobs.
  • When xtriggers are satisfied change their icon to a tick or some other success icon.
  • Queues are special, they appear next to the task icon and should disappear when satisfied.

xtriggers-tree

@oliver-sanders oliver-sanders removed the question Flag this as a question for the next Cylc project meeting. label Feb 10, 2020
@kinow kinow self-assigned this Nov 2, 2020
@kinow kinow removed their assignment May 11, 2021
@kinow kinow modified the milestones: 1.0, 2.0 Sep 10, 2021
@oliver-sanders
Copy link
Member Author

Update 2022-04

  • "Runahead" limit is now a task state modifier.
  • "Queued" is now a task state modifier.

Proposal still holds, however, suggest:

  1. Removing items from the list when completed rather than marking them as done (more realistic as completed xtriggers don't exist in the task pool & data store).
  2. Using the task "modifier" (used for the held/runahead/queued indicator) to display the xtrigger. The indicator basically means "this task won't run yet because of one or more constraints" ... "expand the task to find out more".

@oliver-sanders oliver-sanders modified the milestones: 2.0.0, Pending Jun 8, 2022
@oliver-sanders oliver-sanders modified the milestones: Pending, 1.x Aug 11, 2022
@oliver-sanders
Copy link
Member Author

Getting xtriggers into the tree view is a relatively high priority as they are currently completely invisible in the UI.

@hjoliver
Copy link
Member

For the moment, users need to be aware that a waiting task in n=0, if not queued, runahead limited, or held (all of which are visible already), is waiting on an xtrigger. But yes, more than that would be nice!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants