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

data store: blocked tasks outside of n=1 are missing from the store #4983

Closed
oliver-sanders opened this issue Jul 14, 2022 · 7 comments · Fixed by #6428
Closed

data store: blocked tasks outside of n=1 are missing from the store #4983

oliver-sanders opened this issue Jul 14, 2022 · 7 comments · Fixed by #6428
Assignees
Labels
bug Something is wrong :(
Milestone

Comments

@oliver-sanders
Copy link
Member

oliver-sanders commented Jul 14, 2022

This applies to Cylc 7 compat mode, regular Cylc 8 workflows are protected from this by required outputs.

Explanation

Unsatisfiable tasks will become invisible in the UIs if they drift outside of the N=1 window.

  • For regular Cylc 8 workflows the cause of the problem is an incomplete task which will stay in the N=0 window (I think) preventing blocked downstream tasks from leaving the N=1 window. Consequently the blocked tasks remain visible.
  • However, in Cylc 7 compat mode we don't have required outputs to save us so if the blocked task(s) drift outside the N=1 window they become invisible to the user making it hard to work out what's going wrong.

Example

This example is missing the suicide trigger which would remove the recover task:

# suite.rc
[scheduler]
    allow implicit tasks = True

[scheduling]
    initial cycle point = 1
    cycling mode = integer
    [[graph]]
        P1 = """
            foo:fail => recover
            foo | recover => bar
        """

When we run this workflow the first 5 cycles run as normal, the sixth cycle is runahead limited.

The blocked "recover" tasks from the first five cycles are not in the N=1 window (note no inter-cycle dependencies here) so disappear from the UIs:

foo - running
TUI is experimental and may break with large flows

- foo
   - ̊○ 6
        ○ bar      # ideally we would mark this task as runahead limited too?
        ̊○ foo
        ○ recover  # ideally we would mark this task as runahead limited too?

Pull requests welcome!
This is an Open Source project - please consider contributing a bug fix
yourself (please read CONTRIBUTING.md before starting any work though).

@oliver-sanders oliver-sanders added the bug Something is wrong :( label Jul 14, 2022
@oliver-sanders oliver-sanders added this to the cylc-8.0.1 milestone Jul 14, 2022
@hjoliver
Copy link
Member

Somewhat off-topic, but regarding this:

"ideally we would mark this task as runahead limited too"

What you're suggesting amounts to marking all future tasks as runahead limited, right?

The status quo seems pretty sensible to me and (I would hope) not difficult for users to understand:

A task is runahead limited if it is ready to run, but held back by the runahead limit.

That usefully distinguishes foo from bar and recover in your example above, in that foo is ready to run as soon as the runahead limit moves on, but the other tasks are not.

@oliver-sanders
Copy link
Member Author

Ok, if that's intended, yes totally off topic then.

@oliver-sanders
Copy link
Member Author

(IMO this is not release blocking so have listed against 8.0.1)

@oliver-sanders oliver-sanders modified the milestones: cylc-8.0.1, 8.0.2 Aug 16, 2022
@oliver-sanders oliver-sanders modified the milestones: cylc-8.0.2, cylc-8.0.3 Sep 12, 2022
@oliver-sanders oliver-sanders modified the milestones: cylc-8.0.3, cylc-8.0.4 Oct 12, 2022
@oliver-sanders oliver-sanders modified the milestones: cylc-8.0.4, cylc-8.1.x Dec 6, 2022
@hjoliver hjoliver modified the milestones: cylc-8.1.x, cylc-8.2.0 Jun 13, 2023
@oliver-sanders oliver-sanders modified the milestones: cylc-8.2.0, cylc-8.x Jun 29, 2023
@oliver-sanders
Copy link
Member Author

@hjoliver I think your cylc set PR might close this?

@dwsutherland
Copy link
Member

wouldn't it be the case of keeping them active so they stay in N=0?

@oliver-sanders
Copy link
Member Author

The cylc set PR removes the hidden pool which should make them N=0 I think.

@oliver-sanders oliver-sanders self-assigned this Oct 17, 2024
oliver-sanders added a commit to oliver-sanders/cylc-flow that referenced this issue Oct 17, 2024
* Also closes cylc#4983 (by adding a test for it)
@oliver-sanders
Copy link
Member Author

oliver-sanders commented Oct 17, 2024

At some point along the road, this issue was fixed by some other change.

The n=1 window now contains the recover tasks (which were previously invisible), however, I'm not sure bar should be appearing?

      - ○ 1
         + ● ■ bar
         + ● ■ foo
           ○ recover
      - ○ 2
         + ● ■ bar
         + ● ■ foo
           ○ recover
      - ○ 3
         + ● ■ bar
         + ● ■ foo
           ○ recover
      - ○ 4
         + ● ■ bar
         + ● ■ foo
           ○ recover
      - ○ 5
         + ● ■ bar
         + ● ■ foo
           ○ recover
      - ̊○ 6
           ○ bar
           ̊○ foo
           ○ recover

oliver-sanders added a commit to oliver-sanders/cylc-flow that referenced this issue Oct 17, 2024
* Also closes cylc#4983 (by adding a test for it)
@oliver-sanders oliver-sanders linked a pull request Oct 17, 2024 that will close this issue
8 tasks
@oliver-sanders oliver-sanders modified the milestones: 8.x, 8.3.6 Oct 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something is wrong :(
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants