Commit a313aece authored by Yorick Peterse's avatar Yorick Peterse

Merge branch 'sh-fix-award-emoji-nplus-one-participants' into 'master'

Fix N+1 queries when loading participants for a commit note

Closes #45526

See merge request gitlab-org/gitlab-ce!18471
parents 9cc011fd 775211bc
...@@ -248,7 +248,7 @@ class Commit ...@@ -248,7 +248,7 @@ class Commit
end end
def notes_with_associations def notes_with_associations
notes.includes(:author) notes.includes(:author, :award_emoji)
end end
def merge_requests def merge_requests
......
---
title: Fix N+1 queries when loading participants for a commit note
merge_request:
author:
type: performance
...@@ -91,6 +91,23 @@ describe Note do ...@@ -91,6 +91,23 @@ describe Note do
it "keeps the commit around" do it "keeps the commit around" do
expect(note.project.repository.kept_around?(commit.id)).to be_truthy expect(note.project.repository.kept_around?(commit.id)).to be_truthy
end end
it 'does not generate N+1 queries for participants', :request_store do
def retrieve_participants
commit.notes_with_associations.map(&:participants).to_a
end
# Project authorization checks are cached, establish a baseline
retrieve_participants
control_count = ActiveRecord::QueryRecorder.new do
retrieve_participants
end
create(:note_on_commit, project: note.project, note: 'another note', noteable_id: commit.id)
expect { retrieve_participants }.not_to exceed_query_limit(control_count)
end
end end
describe 'authorization' do describe 'authorization' do
......
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