Skip to content

Preload job artifacts archive in pipeline details

Erick Bajao requested to merge eb-preload-artifacts-merge-request-widget into master

What does this MR do?

Solves #204799 (closed)

Given PipelineDetailsEntity, which is responsible for querying job_artifacts_archive, is being used in different areas, I wanted to avoid forgetting to preload the job_artifacts_archive association. I modified PipelineDetailsEntity to preload it by default unless specified in its options (preload_job_artifacts_archive) not to.

In the case of PipelineSerializer, it didn't rely on PipelineDetailsEntity for preloading because it does its own. It's more performant this way because it can serialize a collection of pipelines, so we only want one query to preload all artifacts of all pipelines in the collection.

In ContentController#widget.json, MergeRequestPollWidgetEntity was using PipelineDetailsEntity for presenting actual_head_pipeline and merge_pipeline. With this fix, there will now be only 2 queries to preload the job_artifacts_archive of the said pipelines.

Screenshots

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team

Merge request reports