A bizzare interaction between cylc set and cylc trigger can cause Cylc to revert back to submission 01, clobbering previous submissions.
This causes task state to drift from job state. It also activates the logic for cleaning out stale job log directories orphaned from a previous run, causing the old logs to be deleted.
Reproducible Example
[scheduling]
[[graph]]
R1 = a => b
[runtime]
[[a]]
script = true
[[b]]
script = false
[[[events]]]
failed handlers = """
cylc trigger %(workflow)s//%(point)s/a && sleep 10 && cylc set %(workflow)s//%(point)s/a && cylc trigger %(workflow)s//%(point)s/a;
"""
$ cylc vip
...
INFO - [1/a:waiting(runahead)] => waiting
INFO - [1/a/01:running] => succeeded
...
INFO - [1/b:waiting(runahead)] => waiting
INFO - [1/b/01:running] => failed
...
force_trigger_tasks(flow=[], flow_wait=False, on_resume=False, tasks=['1/a'])
INFO - Removed tasks: 1/a (flows=1)
INFO - [1/a:waiting(runahead)] => waiting
INFO - [1/a/02:running] => succeeded
...
set(flow=[], flow_wait=False, outputs=[], prerequisites=[], tasks=['1/a'])
INFO - [1/a:waiting(runahead)] setting implied output: submitted
INFO - [1/a:waiting(runahead)] setting implied output: started
...
force_trigger_tasks(flow=[], flow_wait=False, on_resume=False, tasks=['1/a'])
INFO - [1/a:waiting(runahead)] => waiting
INFO - [1/a/01:running] => succeeded
If you look in log/job/1/a you will only find an 01 submission, but there were actually three!
A bizzare interaction between
cylc setandcylc triggercan cause Cylc to revert back to submission 01, clobbering previous submissions.This causes task state to drift from job state. It also activates the logic for cleaning out stale job log directories orphaned from a previous run, causing the old logs to be deleted.
Reproducible Example
If you look in
log/job/1/ayou will only find an01submission, but there were actually three!