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
- Clone this project into your GDK and run a couple of pipelines
- Visit the pipelines page
- In the performance bar, select
pipelines.json
and click theWall
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
andskip_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).