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

8.1.x #5327

Merged
merged 16 commits into from
Jan 27, 2023
Merged

8.1.x #5327

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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