From 1f4dafbc77d335345bdc47ebccde82c44b7cac7d Mon Sep 17 00:00:00 2001 From: Nate Coraor Date: Tue, 6 Oct 2020 14:02:27 -0400 Subject: [PATCH] Defer metadata strategy resolution in job wrapper. --- lib/galaxy/jobs/__init__.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/galaxy/jobs/__init__.py b/lib/galaxy/jobs/__init__.py index 2487ca94c57..46a543374c8 100644 --- a/lib/galaxy/jobs/__init__.py +++ b/lib/galaxy/jobs/__init__.py @@ -911,19 +911,26 @@ class JobWrapper(HasResourceParameters): if use_persisted_destination: self.job_runner_mapper.cached_job_destination = JobDestination(from_job=job) # Wrapper holding the info required to restore and clean up from files used for setting metadata externally - try: - metadata_strategy_override = self.get_destination_configuration('metadata_strategy', None) - except JobMappingException: - metadata_strategy_override = None - if job.tasks: - metadata_strategy_override = "directory" - self.external_output_metadata = get_metadata_compute_strategy(self.app.config, job.id, metadata_strategy_override=metadata_strategy_override, tool_id=job.tool_id) + self.__external_output_metadata = None + self.__has_tasks = bool(job.tasks) self.__commands_in_new_shell = True self.__user_system_pwent = None self.__galaxy_system_pwent = None self.__working_directory = None + @property + def external_output_metadata(self): + if self.__external_output_metadata is None: + try: + metadata_strategy_override = self.get_destination_configuration('metadata_strategy', None) + except JobMappingException: + metadata_strategy_override = None + if self.__has_tasks: + metadata_strategy_override = "directory" + self.__external_output_metadata = get_metadata_compute_strategy(self.app.config, self.job_id, metadata_strategy_override=metadata_strategy_override, tool_id=self.tool.id) + return self.__external_output_metadata + @property def _job_dataset_path_rewriter(self): if self._dataset_path_rewriter is None: