summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-10-30 16:41:49 -0700
committerStan Hu <stanhu@gmail.com>2018-10-30 22:29:57 -0700
commitd4ef4ad752bf05758351bd0b8761566e40ab0e8e (patch)
tree8d8e3f67a217ad5b7d2dac4b0adb3f16d43f433e /app
parent571e651b21c7a618b8686a4b3f8a8c09c87a37f5 (diff)
downloadgitlab-ce-d4ef4ad752bf05758351bd0b8761566e40ab0e8e.tar.gz
Reduce SQL queries needed to load open merge requestssh-optimize-merge-request-project-lookup
The SQL queries and memory allocation in MergeRequests::RefreshService is dominated by queries for Project and Route loads. On staging, the absence of an inverse relationship caused Rails to make over 1100 extraneous SQL queries for the www-gitlab-com repository. Relates to https://gitlab.com/gitlab-org/gitlab-ce/issues/49703
Diffstat (limited to 'app')
-rw-r--r--app/models/project.rb2
1 files changed, 1 insertions, 1 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index d593cbb223a..106cb92e0cc 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -181,7 +181,7 @@ class Project < ActiveRecord::Base
has_one :import_export_upload, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
# Merge Requests for target project should be removed with it
- has_many :merge_requests, foreign_key: 'target_project_id'
+ has_many :merge_requests, foreign_key: 'target_project_id', inverse_of: :target_project
has_many :source_of_merge_requests, foreign_key: 'source_project_id', class_name: 'MergeRequest'
has_many :issues
has_many :labels, class_name: 'ProjectLabel'