Merge branch 'fix-2801' into 'master'
Expires full_path cache after a repository is renamed/transferred Closes gitlab-ee#2801 See merge request !12575
This commit is contained in:
commit
68ac391435
|
@ -103,8 +103,12 @@ module Routable
|
|||
def full_path
|
||||
return uncached_full_path unless RequestStore.active?
|
||||
|
||||
key = "routable/full_path/#{self.class.name}/#{self.id}"
|
||||
RequestStore[key] ||= uncached_full_path
|
||||
RequestStore[full_path_key] ||= uncached_full_path
|
||||
end
|
||||
|
||||
def expires_full_path_cache
|
||||
RequestStore.delete(full_path_key) if RequestStore.active?
|
||||
@full_path = nil
|
||||
end
|
||||
|
||||
def build_full_path
|
||||
|
@ -135,6 +139,10 @@ module Routable
|
|||
path_changed? || parent_changed?
|
||||
end
|
||||
|
||||
def full_path_key
|
||||
@full_path_key ||= "routable/full_path/#{self.class.name}/#{self.id}"
|
||||
end
|
||||
|
||||
def build_full_name
|
||||
if parent && name
|
||||
parent.human_name + ' / ' + name
|
||||
|
|
|
@ -963,6 +963,7 @@ class Project < ActiveRecord::Base
|
|||
begin
|
||||
gitlab_shell.mv_repository(repository_storage_path, "#{old_path_with_namespace}.wiki", "#{new_path_with_namespace}.wiki")
|
||||
send_move_instructions(old_path_with_namespace)
|
||||
expires_full_path_cache
|
||||
|
||||
@old_path_with_namespace = old_path_with_namespace
|
||||
|
||||
|
|
|
@ -78,6 +78,7 @@ module Projects
|
|||
Gitlab::PagesTransfer.new.move_project(project.path, @old_namespace.full_path, @new_namespace.full_path)
|
||||
|
||||
project.old_path_with_namespace = @old_path
|
||||
project.expires_full_path_cache
|
||||
|
||||
execute_system_hooks
|
||||
end
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Expires full_path cache after a repository is renamed/transferred
|
||||
merge_request:
|
||||
author:
|
|
@ -132,6 +132,19 @@ describe Group, 'Routable' do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#expires_full_path_cache' do
|
||||
context 'with RequestStore active', :request_store do
|
||||
it 'expires the full_path cache' do
|
||||
expect(group.full_path).to eq('foo')
|
||||
|
||||
group.route.update(path: 'bar', name: 'bar')
|
||||
group.expires_full_path_cache
|
||||
|
||||
expect(group.full_path).to eq('bar')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#full_name' do
|
||||
let(:group) { create(:group) }
|
||||
let(:nested_group) { create(:group, parent: group) }
|
||||
|
|
|
@ -1216,6 +1216,8 @@ describe Project, models: true do
|
|||
|
||||
expect(project).to receive(:expire_caches_before_rename)
|
||||
|
||||
expect(project).to receive(:expires_full_path_cache)
|
||||
|
||||
project.rename_repo
|
||||
end
|
||||
|
||||
|
|
|
@ -30,6 +30,12 @@ describe Projects::TransferService, services: true do
|
|||
transfer_project(project, user, group)
|
||||
end
|
||||
|
||||
it 'expires full_path cache' do
|
||||
expect(project).to receive(:expires_full_path_cache)
|
||||
|
||||
transfer_project(project, user, group)
|
||||
end
|
||||
|
||||
it 'executes system hooks' do
|
||||
expect_any_instance_of(Projects::TransferService).to receive(:execute_system_hooks)
|
||||
|
||||
|
|
Loading…
Reference in New Issue