Skip to content

Commit

Permalink
Merge pull request #5327 from cylc/8.1.x
Browse files Browse the repository at this point in the history
8.1.x -> master
  • Loading branch information
MetRonnie authored Jan 27, 2023
2 parents a52943a + 8c855b4 commit 219c3ef
Show file tree
Hide file tree
Showing 29 changed files with 603 additions and 343 deletions.
16 changes: 16 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,22 @@ creating a new release entry be sure to copy & paste the span tag with the
updated. Only the first match gets replaced, so it's fine to leave the old
ones in. -->

-------------------------------------------------------------------------------
## __cylc-8.1.1 (<span actions:bind='release-date'>Coming Soon</span>)__

### Fixes

[#5312](https://github.com/cylc/cylc-flow/pull/5312) - task names must be comma-separated in queue member lists. Any implicit tasks (i.e. with no task definition under runtime) assigned to a queue will generate a warning.

[#5314](https://github.com/cylc/cylc-flow/pull/5314) - Fix broken
command option: `cylc vip --run-name`.

[#5319](https://github.com/cylc/cylc-flow/pull/5319),
[#5321](https://github.com/cylc/cylc-flow/pull/5321),
[#5325](https://github.com/cylc/cylc-flow/pull/5325) -
Various efficiency optimisations to the scheduler which particularly impact
workflows with many-to-many dependencies (e.g. `<a> => <b>`).

-------------------------------------------------------------------------------
## __cylc-8.1.0 (<span actions:bind='release-date'>Released 2023-01-16</span>)__

Expand Down
2 changes: 1 addition & 1 deletion cylc/flow/cfgspec/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -688,7 +688,7 @@ def get_script_common_text(this: str, example: Optional[str] = None):
If set to 0 this queue is not limited.
''')
Conf('members', VDR.V_STRING_LIST, desc='''
Conf('members', VDR.V_SPACELESS_STRING_LIST, desc='''
A list of member tasks, or task family names to assign to
this queue.
Expand Down
36 changes: 36 additions & 0 deletions cylc/flow/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ class WorkflowConfig:

CHECK_CIRCULAR_LIMIT = 100 # If no. tasks > this, don't check circular
VIS_N_POINTS = 3
MAX_WARNING_LINES = 5

def __init__(
self,
Expand Down Expand Up @@ -532,6 +533,9 @@ def __init__(
self._check_special_tasks() # adds to self.implicit_tasks
self._check_explicit_cycling()

self._warn_if_queues_have_implicit_tasks(
self.cfg, self.taskdefs, self.MAX_WARNING_LINES)

self._check_implicit_tasks()
self._check_sequence_bounds()
self.validate_namespace_names()
Expand Down Expand Up @@ -571,6 +575,38 @@ def __init__(

self.mem_log("config.py: end init config")

@staticmethod
def _warn_if_queues_have_implicit_tasks(
config, taskdefs, max_warning_lines
):
"""Warn if queues contain implict tasks.
"""
implicit_q_msg = ''

# Get the names of the first N implicit queue tasks:
for queue in config["scheduling"]["queues"]:
for name in config["scheduling"]["queues"][queue][
"members"
]:
if (
name not in taskdefs
and name not in config['runtime']
and len(implicit_q_msg.split('\n')) <= max_warning_lines
):
implicit_q_msg += f'\n * task {name!r} in queue {queue!r}'

# Warn users if tasks are implied by queues.
if implicit_q_msg:
truncation_msg = (
f"\n...showing first {max_warning_lines} tasks..."
if len(implicit_q_msg.split('\n')) > max_warning_lines
else ""
)
LOG.warning(
'Queues contain tasks not defined in'
f' runtime: {implicit_q_msg}{truncation_msg}'
)

def prelim_process_graph(self) -> None:
"""Ensure graph is not empty; set integer cycling mode and icp/fcp = 1
for simplest "R1 = foo" type graphs.
Expand Down
Loading

0 comments on commit 219c3ef

Please sign in to comment.