From 9ee2a7d4577a715137edcf33fd2b0a474a7a8b8d Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Fri, 15 Dec 2017 09:44:00 +0100 Subject: [PATCH] Adjust stderr collection to (Legacy-)ToolProvidedMetadata --- lib/galaxy/jobs/__init__.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/lib/galaxy/jobs/__init__.py b/lib/galaxy/jobs/__init__.py index 10fbbcf82df1..745aeb768482 100644 --- a/lib/galaxy/jobs/__init__.py +++ b/lib/galaxy/jobs/__init__.py @@ -27,7 +27,10 @@ from galaxy.jobs.actions.post import ActionBox from galaxy.jobs.mapper import JobRunnerMapper from galaxy.jobs.runners import BaseJobRunner, JobState -from galaxy.tools.parameters.output_collect import NullToolProvidedMetadata +from galaxy.tools.parameters.output_collect import ( + LegacyToolProvidedMetadata, + ToolProvidedMetadata +) from galaxy.util import safe_makedirs, unicodify from galaxy.util.bunch import Bunch from galaxy.util.expressions import ExpressionContext @@ -1181,13 +1184,17 @@ def finish( # We collect the stderr from tools that write their stderr to galaxy.json tool_provided_metadata = self.get_tool_provided_job_metadata() - if not isinstance(tool_provided_metadata, NullToolProvidedMetadata): - extra_stderr = "\n".join([item.get('stderr') for item in tool_provided_metadata.tool_provided_job_metadata if item.get('stderr')]) - if extra_stderr: - if stderr: - stderr = "%s\n%s" % (stderr, extra_stderr) - else: - stderr = extra_stderr + extra_stderr = '' + if isinstance(tool_provided_metadata, LegacyToolProvidedMetadata): + extra_stderr = [item.get('stderr') for item in tool_provided_metadata.tool_provided_job_metadata if item.get('stderr')] + elif isinstance(tool_provided_metadata, ToolProvidedMetadata): + extra_stderr = [item.get('stderr') for item in tool_provided_metadata.tool_provided_job_metadata.values() if item.get('stderr')] + if extra_stderr: + extra_stderr = "\n".join(extra_stderr) + if stderr: + stderr = "%s\n%s" % (stderr, extra_stderr) + else: + stderr = extra_stderr # Check the tool's stdout, stderr, and exit code for errors, but only # if the job has not already been marked as having an error.