From a0527ab806b005eeffd3b4f983e33c4bd76ce6b3 Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Tue, 28 Nov 2017 16:50:44 +0100 Subject: Only load branch names for protected branch checks When checking if a branch is protected we don't need all columns of every protected branch row, instead we only care about the names. By using "select" here we reduce the amount of data we need to send over the wire and load into memory. --- app/models/protected_branch.rb | 4 +++- app/models/protected_tag.rb | 4 +++- changelogs/unreleased/protected-branches-names.yml | 5 +++++ 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 changelogs/unreleased/protected-branches-names.yml diff --git a/app/models/protected_branch.rb b/app/models/protected_branch.rb index 89bfc5f9a9c..d28fed11ca8 100644 --- a/app/models/protected_branch.rb +++ b/app/models/protected_branch.rb @@ -10,7 +10,9 @@ class ProtectedBranch < ActiveRecord::Base def self.protected?(project, ref_name) return true if project.empty_repo? && default_branch_protected? - self.matching(ref_name, protected_refs: project.protected_branches).present? + refs = project.protected_branches.select(:name) + + self.matching(ref_name, protected_refs: refs).present? end def self.default_branch_protected? diff --git a/app/models/protected_tag.rb b/app/models/protected_tag.rb index f38109c0e52..42a9bcf7723 100644 --- a/app/models/protected_tag.rb +++ b/app/models/protected_tag.rb @@ -5,6 +5,8 @@ class ProtectedTag < ActiveRecord::Base protected_ref_access_levels :create def self.protected?(project, ref_name) - self.matching(ref_name, protected_refs: project.protected_tags).present? + refs = project.protected_tags.select(:name) + + self.matching(ref_name, protected_refs: refs).present? end end diff --git a/changelogs/unreleased/protected-branches-names.yml b/changelogs/unreleased/protected-branches-names.yml new file mode 100644 index 00000000000..3c6767df571 --- /dev/null +++ b/changelogs/unreleased/protected-branches-names.yml @@ -0,0 +1,5 @@ +--- +title: Only load branch names for protected branch checks +merge_request: +author: +type: performance -- cgit v1.2.1