From 756f304576b076491a63fedd2297cccb8352ac1b Mon Sep 17 00:00:00 2001 From: Oliver Sanders Date: Wed, 18 Oct 2023 17:05:18 +0100 Subject: [PATCH] back-compat: submitted is implicitly required * Closes https://github.com/cylc/cylc-flow/issues/5771. * Ensure that submit-failed tasks are marked as incomplete. * See also https://github.com/cylc/cylc-flow/pull/5755 --- changes.d/5776.fix.md | 1 + cylc/flow/task_pool.py | 2 +- .../spawn-on-demand/19-submitted-compat.t | 59 +++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 changes.d/5776.fix.md create mode 100644 tests/functional/spawn-on-demand/19-submitted-compat.t diff --git a/changes.d/5776.fix.md b/changes.d/5776.fix.md new file mode 100644 index 00000000000..d123c2cb24f --- /dev/null +++ b/changes.d/5776.fix.md @@ -0,0 +1 @@ +Ensure that submit-failed tasks are marked as incomplete (so remain visible) when running in back-compat mode. diff --git a/cylc/flow/task_pool.py b/cylc/flow/task_pool.py index 697bc72a155..2e8d8a634ac 100644 --- a/cylc/flow/task_pool.py +++ b/cylc/flow/task_pool.py @@ -1402,7 +1402,7 @@ def remove_if_complete(self, itask): (C7 failed tasks don't count toward runahead limit) """ if cylc.flow.flags.cylc7_back_compat: - if not itask.state(TASK_STATUS_FAILED): + if not itask.state(TASK_STATUS_FAILED, TASK_OUTPUT_SUBMIT_FAILED): self.remove(itask, 'finished') if self.compute_runahead(): self.release_runahead_tasks() diff --git a/tests/functional/spawn-on-demand/19-submitted-compat.t b/tests/functional/spawn-on-demand/19-submitted-compat.t new file mode 100644 index 00000000000..d529dfb4183 --- /dev/null +++ b/tests/functional/spawn-on-demand/19-submitted-compat.t @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +# THIS FILE IS PART OF THE CYLC WORKFLOW ENGINE. +# Copyright (C) NIWA & British Crown (Met Office) & Contributors. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +#------------------------------------------------------------------------------- + +# Test the submitted and submit-failed triggers work correctly in back-compat +# mode. See https://github.com/cylc/cylc-flow/issues/5771 + +. "$(dirname "$0")/test_header" +set_test_number 4 + +init_workflow "${TEST_NAME_BASE}" << __FLOW__ +[scheduler] + [[events]] + abort on stall timeout = True + stall timeout = PT0S + +[scheduling] + [[graph]] + R1 = """ + a + b + """ + +[runtime] + [[a]] # should complete + [[b]] # should not complete + platform = broken +__FLOW__ + +mv "$WORKFLOW_RUN_DIR/flow.cylc" "$WORKFLOW_RUN_DIR/suite.rc" + +workflow_run_fail "${TEST_NAME_BASE}-run" \ + cylc play "${WORKFLOW_NAME}" --no-detach + +grep_workflow_log_ok \ + "${TEST_NAME_BASE}-back-compat" \ + 'Backward compatibility mode ON' +grep_workflow_log_ok \ + "${TEST_NAME_BASE}-a-complete" \ + '\[1/a running job:01 flows:1\] => succeeded' +grep_workflow_log_ok \ + "${TEST_NAME_BASE}-b-incomplete" \ + "1/b did not complete required outputs: \['submitted', 'succeeded'\]" + +purge