cylc-flow icon indicating copy to clipboard operation
cylc-flow copied to clipboard

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

Open oliver-sanders opened this issue 2 years ago • 7 comments

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 avatar Jul 14 '22 15:07 oliver-sanders

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.

hjoliver avatar Jul 15 '22 01:07 hjoliver

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

oliver-sanders avatar Jul 15 '22 08:07 oliver-sanders

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

oliver-sanders avatar Jul 15 '22 10:07 oliver-sanders

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

oliver-sanders avatar Dec 08 '23 13:12 oliver-sanders

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

dwsutherland avatar Feb 01 '24 01:02 dwsutherland

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

oliver-sanders avatar Feb 01 '24 09:02 oliver-sanders