From 6dbdc430bd9d9281407e73988511f5e355d7f537 Mon Sep 17 00:00:00 2001 From: Nate Coraor Date: Fri, 26 Feb 2016 10:29:12 -0500 Subject: [PATCH] Loading a Job object eagerloads a lot of mappings down to the dataset level. For Jobs with many outputs with large metadata, this can consume many GB of memory. Attempt to lazy load instead such that only one row should be returned for querying jobs (but this could negatively impact performance in other places). --- lib/galaxy/model/mapping.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/galaxy/model/mapping.py b/lib/galaxy/model/mapping.py index 061b1a105de..7df97904539 100644 --- a/lib/galaxy/model/mapping.py +++ b/lib/galaxy/model/mapping.py @@ -2100,16 +2100,16 @@ mapper( model.Job, model.Job.table, properties=dict( user=relation( model.User ), galaxy_session=relation( model.GalaxySession ), history=relation( model.History ), - library_folder=relation( model.LibraryFolder ), - parameters=relation( model.JobParameter, lazy=False ), + library_folder=relation( model.LibraryFolder, lazy=True ), + parameters=relation( model.JobParameter, lazy=True ), input_datasets=relation( model.JobToInputDatasetAssociation ), - output_datasets=relation( model.JobToOutputDatasetAssociation ), - output_dataset_collection_instances=relation( model.JobToOutputDatasetCollectionAssociation ), - output_dataset_collections=relation( model.JobToImplicitOutputDatasetCollectionAssociation ), + output_datasets=relation( model.JobToOutputDatasetAssociation, lazy=True ), + output_dataset_collection_instances=relation( model.JobToOutputDatasetCollectionAssociation, lazy=True ), + output_dataset_collections=relation( model.JobToImplicitOutputDatasetCollectionAssociation, lazy=True ), post_job_actions=relation( model.PostJobActionAssociation, lazy=False ), input_library_datasets=relation( model.JobToInputLibraryDatasetAssociation ), - output_library_datasets=relation( model.JobToOutputLibraryDatasetAssociation ), - external_output_metadata=relation( model.JobExternalOutputMetadata, lazy=False ), + output_library_datasets=relation( model.JobToOutputLibraryDatasetAssociation, lazy=True ), + external_output_metadata=relation( model.JobExternalOutputMetadata, lazy=True ), tasks=relation( model.Task ) ) )