X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/4eb78e44b6f046607d0b22cf2dbe3133e458463d..f79d1cdf7696a3bbcc374df5ce4d1761a28a5ea5:/sdk/cwl/arvados_cwl/executor.py diff --git a/sdk/cwl/arvados_cwl/executor.py b/sdk/cwl/arvados_cwl/executor.py index 677e10d265..432b380aab 100644 --- a/sdk/cwl/arvados_cwl/executor.py +++ b/sdk/cwl/arvados_cwl/executor.py @@ -70,7 +70,7 @@ class RuntimeStatusLoggingHandler(logging.Handler): kind = 'error' elif record.levelno >= logging.WARNING: kind = 'warning' - if kind == 'warning' and record.name == "salad": + if kind == 'warning' and record.name in ("salad", "crunchstat_summary"): # Don't send validation warnings to runtime status, # they're noisy and unhelpful. return @@ -146,6 +146,7 @@ class ArvCwlExecutor(object): self.stdout = stdout self.fast_submit = False self.git_info = arvargs.git_info + self.debug = False if keep_client is not None: self.keep_client = keep_client @@ -369,7 +370,8 @@ The 'jobs' API is no longer supported. page = keys[:pageSize] try: proc_states = table.list(filters=[["uuid", "in", page]], select=["uuid", "container_uuid", "state", "log_uuid", - "output_uuid", "modified_at", "properties"]).execute(num_retries=self.num_retries) + "output_uuid", "modified_at", "properties", + "runtime_constraints"]).execute(num_retries=self.num_retries) except Exception as e: logger.warning("Temporary error checking states on API server: %s", e) remain_wait = self.poll_interval @@ -603,6 +605,8 @@ The 'jobs' API is no longer supported. if git_info[g]: logger.info(" %s: %s", g.split("#", 1)[1], git_info[g]) + runtimeContext.git_info = git_info + workbench1 = self.api.config()["Services"]["Workbench1"]["ExternalURL"] workbench2 = self.api.config()["Services"]["Workbench2"]["ExternalURL"] controller = self.api.config()["Services"]["Controller"]["ExternalURL"] @@ -874,7 +878,8 @@ The 'jobs' API is no longer supported. if (self.task_queue.in_flight + len(self.processes)) > 0: self.workflow_eval_lock.wait(3) else: - logger.error("Workflow is deadlocked, no runnable processes and not waiting on any pending processes.") + if self.final_status is None: + logger.error("Workflow is deadlocked, no runnable processes and not waiting on any pending processes.") break if self.stop_polling.is_set(): @@ -924,6 +929,11 @@ The 'jobs' API is no longer supported. if self.final_output is None: raise WorkflowException("Workflow did not return a result.") + if runtimeContext.usage_report_notes: + logger.info("Steps with low resource utilization (possible optimization opportunities):") + for x in runtimeContext.usage_report_notes: + logger.info(" %s", x) + if runtimeContext.submit and isinstance(tool, Runner): logger.info("Final output collection %s", tool.final_output) if workbench2 or workbench1: