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).
This commit is contained in:
Nate Coraor
2016-02-26 10:34:41 -05:00
parent da50cf1149
commit 6dbdc430bd
+7 -7
View File
@@ -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 )
) )