diff --git a/changes.d/6798.fix.md b/changes.d/6798.fix.md new file mode 100644 index 00000000000..febc1600331 --- /dev/null +++ b/changes.d/6798.fix.md @@ -0,0 +1 @@ +Prevent unintended submission retries that could result from platform connection issues in certain circumstances. diff --git a/conda-environment.yml b/conda-environment.yml index fed33d57a88..e76af3f00cf 100644 --- a/conda-environment.yml +++ b/conda-environment.yml @@ -17,7 +17,7 @@ dependencies: - python - pyzmq >=22 - importlib_metadata >=5.0 # [py<3.12] - - urwid >=2,<3,!=2.6.2,!=2.6.3 + - urwid >=2.2,<3,!=2.6.2,!=2.6.3 - tomli >=2 # [py<3.11] # optional dependencies diff --git a/cylc/flow/scheduler.py b/cylc/flow/scheduler.py index 3b4693fe960..83fe494e49e 100644 --- a/cylc/flow/scheduler.py +++ b/cylc/flow/scheduler.py @@ -1047,15 +1047,6 @@ async def process_command_queue(self) -> None: self.command_queue.task_done() - def info_get_graph_raw(self, cto, ctn, grouping=None): - """Return raw graph.""" - return ( - self.config.get_graph_raw(cto, ctn, grouping), - self.config.workflow_polling_tasks, - self.config.leaves, - self.config.feet - ) - def _set_stop(self, stop_mode: Optional[StopMode] = None) -> None: """Set shutdown mode.""" self.proc_pool.set_stopping() diff --git a/cylc/flow/task_job_mgr.py b/cylc/flow/task_job_mgr.py index e0cecad623c..70a8ec6caf0 100644 --- a/cylc/flow/task_job_mgr.py +++ b/cylc/flow/task_job_mgr.py @@ -573,10 +573,11 @@ def _get_platform_with_good_host( Returns: The platform with a good host, or None if no such platform is found """ + out_of_hosts = False for itask in itasks: # If there are any hosts left for this platform which we # have not previously failed to contact with a 255 error. - if any( + if not out_of_hosts and any( host not in self.task_remote_mgr.bad_hosts for host in itask.platform['hosts'] ): @@ -618,6 +619,7 @@ def _get_platform_with_good_host( itask.platform['name'], ) ) + out_of_hosts = True done_tasks.append(itask) return None