Commit graph

5 commits

Author SHA1 Message Date
Grzegorz Bizon
1af2274b41 Restore lazy loading of pipeline commits in preloader 2018-05-25 13:45:08 +02:00
Grzegorz Bizon
dab3ae39a2 Do not paginate pipelines active relation twice 2018-05-23 13:29:21 +02:00
Grzegorz Bizon
f89f232d19 Simplify pipelines preloader implementation 2018-05-23 10:22:28 +02:00
Grzegorz Bizon
ea35fd05bb Refactor pipeline preloader to split reponsibilities better 2018-05-22 13:55:05 +02:00
Yorick Peterse
19428e8008
Preload pipeline data for project pipelines
When displaying the pipelines of a project we now preload the following
data:

1. Authors of the commits that belong to these pipelines
2. The number of warnings per pipeline, which is used by
   Ci::Pipeline#has_warnings?

== Commit Authors

Previously this data was queried for every Commit separately, leading to
20 SQL queries being executed in the worst case. With an average of 3 to
5 milliseconds per SQL query this could result in 100 milliseconds being
spent in _just_ getting Commit authors.

To preload this data Commit#author now uses BatchLoader (through
Commit#lazy_author), and a separate module
Gitlab::Ci::Pipeline::Preloader is used to ensure all authors are loaded
before they are used.

== Number of warnings

This changes Ci::Pipeline#has_warnings? so it supports preloading of the
number of warnings per pipeline. This removes the need for executing a
COUNT(*) query for every pipeline just to see if it has any warnings or
not.
2018-05-17 13:53:00 +02:00