- 23 Nov, 2017 1 commit
-
-
Sean McGivern authored
Compared to the merge_request_diff association: 1. It's simpler to query. The query uses a foreign key to the merge_request_diffs table, so no ordering is necessary. 2. It's faster for preloading. The merge_request_diff association has to load every diff for the MRs in the set, then discard all but the most recent for each. This association means that Rails can just query for N diffs from N MRs. 3. It's more complicated to update. This is a bidirectional foreign key, so we need to update two tables when adding a diff record. This also means we need to handle this as a special case when importing a GitLab project. There is some juggling with this association in the merge request model: * `MergeRequest#latest_merge_request_diff` is _always_ the latest diff. * `MergeRequest#merge_request_diff` reuses `MergeRequest#latest_merge_request_diff` unless: * Arguments are passed. These are typically to force-reload the association. * It doesn't exist. That means we might be trying to implicitly create a diff. This only seems to happen in specs. * The association is already loaded. This is important for the reasons explained in the comment, which I'll reiterate here: if we a) load a non-latest diff, then b) get its `merge_request`, then c) get that MR's `merge_request_diff`, we should get the diff we loaded in c), even though that's not the latest diff. Basically, `MergeRequest#merge_request_diff` is the latest diff in most cases, but not quite all.
-
- 22 Nov, 2017 7 commits
-
-
Sean McGivern authored
Add Group Milestone sorting Closes #39720 See merge request gitlab-org/gitlab-ce!15230
-
Sean McGivern authored
Add QUERY_RECORDER_DEBUG environment variable to improve performance debugging See merge request gitlab-org/gitlab-ce!15499
-
Phil Hughes authored
Add support of Mermaid Closes #3711 See merge request gitlab-org/gitlab-ce!15107
-
Sean McGivern authored
Add FetchSourceBranch Gitaly call Closes gitaly#758 See merge request gitlab-org/gitlab-ce!15498
-
Jacob Vosmaer (GitLab) authored
-
Stan Hu authored
-
Vitaliy @blackst0ne Klachkov authored
-
- 21 Nov, 2017 32 commits
-
-
Michael Kozono authored
-
Michael Kozono authored
[ci skip]
-
Michael Kozono authored
-
Yorick Peterse authored
Update composite pipelines index to include "id" See merge request gitlab-org/gitlab-ce!15519
-
Annabel Dunstone Gray authored
default fill color for SVGs See merge request gitlab-org/gitlab-ce!15476
-
Simon Knox authored
-
Stan Hu authored
ignore hashed repos (for now) when using `rake gitlab:cleanup:repos` Closes #40291 See merge request gitlab-org/gitlab-ce!15520
-
Brett Walker authored
-
Douwe Maan authored
Set the default gitlab-shell timeout to 3 hours Closes #39977 See merge request gitlab-org/gitlab-ce!15292
-
Rémy Coutable authored
Use Redis cache for branch existence checks Closes #40349 See merge request gitlab-org/gitlab-ce!15513
-
Jacob Vosmaer (GitLab) authored
-
🚄 Job van der Voort 🚀 authored
Update CONTRIBUTING.md: Link definition of done to criteria See merge request gitlab-org/gitlab-ce!15500
-
Victor Wu authored
-
Stan Hu authored
FileUploader should use Hashed Storage only when project is migrated See merge request gitlab-org/gitlab-ce!15526
-
🚄 Job van der Voort 🚀 authored
Simplify Feature Proposal template See merge request gitlab-org/gitlab-ce!15297
-
Kamil Trzciński authored
Use arrays in Ci::Pipeline#latest_builds_with_artifacts See merge request gitlab-org/gitlab-ce!15525
-
Rémy Coutable authored
Use `make install` for Gitaly setups in non-test environments See merge request gitlab-org/gitlab-ce!15295
-
Alejandro Rodríguez authored
-
Gabriel Mazetto authored
-
Nick Thomas authored
-
Annabel Dunstone Gray authored
Fix blank states using old css Closes #40377 See merge request gitlab-org/gitlab-ce!15521
-
Annabel Dunstone Gray authored
Add wiki css to help page See merge request gitlab-org/gitlab-ce!15488
-
Yorick Peterse authored
This updates the composite index on ci_pipelines (project_id, ref, status) to also include the "id" column at the end. Adding this column to the index drastically improves the performance of queries used for getting the latest pipeline for a particular branch. For example, on project dashboards we'll run a query like the following: SELECT ci_pipelines.* FROM ci_pipelines WHERE ci_pipelines.project_id = 13083 AND ci_pipelines.ref = 'master' AND ci_pipelines.status = 'success' ORDER BY ci_pipelines.id DESC LIMIT 1; Limit (cost=0.43..58.88 rows=1 width=224) (actual time=26.956..26.956 rows=1 loops=1) Buffers: shared hit=6544 dirtied=16 -> Index Scan Backward using ci_pipelines_pkey on ci_pipelines (cost=0.43..830922.89 rows=14216 width=224) (actual time=26.954..26.954 rows=1 loops=1) Filter: ((project_id = 13083) AND ((ref)::text = 'master'::text) AND ((status)::text = 'success'::text)) Rows Removed by Filter: 6476 Buffers: shared hit=6544 dirtied=16 Planning time: 1.484 ms Execution time: 27.000 ms Because of the lack of "id" in the index we end up scanning over the primary key index, then applying a filter to filter out any remaining rows. The more pipelines a GitLab instance has the slower this will get. By adding "id" to the mentioned composite index we can change the above plan into the following: Limit (cost=0.56..2.01 rows=1 width=224) (actual time=0.034..0.034 rows=1 loops=1) Buffers: shared hit=5 -> Index Scan Backward using yorick_test on ci_pipelines (cost=0.56..16326.37 rows=11243 width=224) (actual time=0.033..0.033 rows=1 loops=1) Index Cond: ((project_id = 13083) AND ((ref)::text = 'master'::text) AND ((status)::text = 'success'::text)) Buffers: shared hit=5 Planning time: 0.695 ms Execution time: 0.061 ms This in turn leads to a best-case improvement of roughly 25 milliseconds, give or take a millisecond or two.
-
Yorick Peterse authored
This changes Ci::Pipeline#latest_builds_with_artifacts so it returns an Array instead of a relation. Whenever we use this data we do so in two steps: 1. Count the number of rows 2. If this number is greater than 0, iterate over the rows By returning an Array instead we only execute 1 query of which the total time/work is less than running either just a COUNT(*) or both queries (in the worst case). On GitLab.com this change should save us a few milliseconds per request to ProjectsController#show.
-
Douwe Maan authored
Optimize read-only middleware so that it does not consume as much CPU Closes #40185 and gitlab-com/infrastructure#3240 See merge request gitlab-org/gitlab-ce!15504
-
Filipa Lacerda authored
-
Rémy Coutable authored
Skip confirmation user api Closes #28934 See merge request gitlab-org/gitlab-ce!15175
-
Daniel Juarez authored
-
Sean McGivern authored
Custom issue tracker See merge request gitlab-org/gitlab-ce!15516
-
Victor Wu authored
-
Sean McGivern authored
Resolve "Notes API for issues no longer returns label additions/removals" Closes #39461 See merge request gitlab-org/gitlab-ce!15080
-
Douwe Maan authored
Resolve "TagsPage|Tags" Closes #40367 See merge request gitlab-org/gitlab-ce!15512
-