Commit a0527ab8 authored by Yorick Peterse's avatar Yorick Peterse

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.
parent 52f5259a
...@@ -10,7 +10,9 @@ class ProtectedBranch < ActiveRecord::Base ...@@ -10,7 +10,9 @@ class ProtectedBranch < ActiveRecord::Base
def self.protected?(project, ref_name) def self.protected?(project, ref_name)
return true if project.empty_repo? && default_branch_protected? 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 end
def self.default_branch_protected? def self.default_branch_protected?
......
...@@ -5,6 +5,8 @@ class ProtectedTag < ActiveRecord::Base ...@@ -5,6 +5,8 @@ class ProtectedTag < ActiveRecord::Base
protected_ref_access_levels :create protected_ref_access_levels :create
def self.protected?(project, ref_name) 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
end end
---
title: Only load branch names for protected branch checks
merge_request:
author:
type: performance
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment