Skip to content

Optionally skip status preloads for pipeline lists

What does this MR do and why?

Removes a few unnecessary status preloads for pipeline lists. The change is behind the flag skip_status_preload_in_pipeline_lists, disabled by default.

Background

This is part of a series of optimizations for pipeline lists spawned from !142214. Individually they are of varying significance, but they should compound. This one should be most noticeable for large pipelines, especially if they contain lots of large downstream pipelines.

MR acceptance checklist

Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Screenshots or screen recordings

Screenshots are required for UI changes, and strongly recommended for all other merge requests.

Before After

How to set up and validate locally

  1. Clone this project into your GDK and run a couple of pipelines
  2. Visit the pipelines page
  3. In the performance bar, select pipelines.json and click the Wall link to pull up a flamegraph

Be sure to refresh the flamegraph a few times without cache each time to get a better idea. Variance may be fairly high depending on whether garbage collection triggers.

Expected results:

  • Baseline: When both merge_request_pipelines_list_disable_coverage and skip_status_preload_in_pipeline_lists are disabled, things will be very slow.
  • Test: When both flags are enabled, things should be faster and with fewer GC pauses, albeit still slow (the biggest improvement for this edge case will come with !142214).
Edited by Hordur Freyr Yngvason

Merge request reports