-
- Downloads
There was an error fetching the commit references. Please try again later.
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.
Showing
- app/controllers/projects/pipelines_controller.rb 1 addition, 1 deletionapp/controllers/projects/pipelines_controller.rb
- app/models/ci/pipeline.rb 12 additions, 1 deletionapp/models/ci/pipeline.rb
- app/models/commit.rb 27 additions, 1 deletionapp/models/commit.rb
- lib/gitlab/ci/pipeline/preloader.rb 28 additions, 0 deletionslib/gitlab/ci/pipeline/preloader.rb
- spec/lib/gitlab/ci/pipeline/preloader_spec.rb 20 additions, 0 deletionsspec/lib/gitlab/ci/pipeline/preloader_spec.rb
- spec/models/ci/pipeline_spec.rb 27 additions, 0 deletionsspec/models/ci/pipeline_spec.rb
- spec/models/commit_spec.rb 80 additions, 4 deletionsspec/models/commit_spec.rb
lib/gitlab/ci/pipeline/preloader.rb
0 → 100644
Please register or sign in to comment