Only update the sidebar count caches when needed
This ensures the issues/MR cache of the sidebar is only updated when the state or confidential flags changes, instead of changing this for every update.
This commit is contained in:
parent
9e7e0496ff
commit
c158a22fd3
|
@ -269,7 +269,13 @@ class Issue < ActiveRecord::Base
|
|||
end
|
||||
end
|
||||
|
||||
def update_project_counter_caches?
|
||||
state_changed? || confidential_changed?
|
||||
end
|
||||
|
||||
def update_project_counter_caches
|
||||
return unless update_project_counter_caches?
|
||||
|
||||
Projects::OpenIssuesCountService.new(project).refresh_cache
|
||||
end
|
||||
|
||||
|
|
|
@ -942,7 +942,13 @@ class MergeRequest < ActiveRecord::Base
|
|||
true
|
||||
end
|
||||
|
||||
def update_project_counter_caches?
|
||||
state_changed?
|
||||
end
|
||||
|
||||
def update_project_counter_caches
|
||||
return unless update_project_counter_caches?
|
||||
|
||||
Projects::OpenMergeRequestsCountService.new(target_project).refresh_cache
|
||||
end
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Only update the sidebar count caches when needed
|
||||
merge_request:
|
||||
author:
|
||||
type: other
|
|
@ -769,4 +769,22 @@ describe Issue do
|
|||
expect(described_class.public_only).to eq([public_issue])
|
||||
end
|
||||
end
|
||||
|
||||
describe '#update_project_counter_caches?' do
|
||||
it 'returns true when the state changes' do
|
||||
subject.state = 'closed'
|
||||
|
||||
expect(subject.update_project_counter_caches?).to eq(true)
|
||||
end
|
||||
|
||||
it 'returns true when the confidential flag changes' do
|
||||
subject.confidential = true
|
||||
|
||||
expect(subject.update_project_counter_caches?).to eq(true)
|
||||
end
|
||||
|
||||
it 'returns false when the state or confidential flag did not change' do
|
||||
expect(subject.update_project_counter_caches?).to eq(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1700,4 +1700,16 @@ describe MergeRequest do
|
|||
.to change { project.open_merge_requests_count }.from(1).to(0)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#update_project_counter_caches?' do
|
||||
it 'returns true when the state changes' do
|
||||
subject.state = 'closed'
|
||||
|
||||
expect(subject.update_project_counter_caches?).to eq(true)
|
||||
end
|
||||
|
||||
it 'returns false when the state did not change' do
|
||||
expect(subject.update_project_counter_caches?).to eq(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue