summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/helpers/projects_helper.rb11
-rw-r--r--app/models/namespace.rb4
-rw-r--r--changelogs/unreleased/dz-project-list-cache-key.yml4
-rw-r--r--spec/helpers/projects_helper_spec.rb6
-rw-r--r--spec/models/namespace_spec.rb6
5 files changed, 30 insertions, 1 deletions
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 78b54dc20e5..fd85217debf 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -157,7 +157,16 @@ module ProjectsHelper
end
def project_list_cache_key(project)
- key = [project.namespace.cache_key, project.cache_key, controller.controller_name, controller.action_name, current_application_settings.cache_key, 'v2.4']
+ key = [
+ 'parent/' + project.namespace.parent_full_path,
+ project.namespace.cache_key,
+ project.cache_key,
+ controller.controller_name,
+ controller.action_name,
+ current_application_settings.cache_key,
+ 'v2.4'
+ ]
+
key << pipeline_status_cache_key(project.pipeline_status) if project.pipeline_status.has_status?
key
diff --git a/app/models/namespace.rb b/app/models/namespace.rb
index a7ede5e3b9e..cf82b56cc7a 100644
--- a/app/models/namespace.rb
+++ b/app/models/namespace.rb
@@ -224,6 +224,10 @@ class Namespace < ActiveRecord::Base
parent.present?
end
+ def parent_full_path
+ full_path.split('/')[0...-1].join('/')
+ end
+
private
def repository_storage_paths
diff --git a/changelogs/unreleased/dz-project-list-cache-key.yml b/changelogs/unreleased/dz-project-list-cache-key.yml
new file mode 100644
index 00000000000..79d89b1c509
--- /dev/null
+++ b/changelogs/unreleased/dz-project-list-cache-key.yml
@@ -0,0 +1,4 @@
+---
+title: Add parent full path to project list cache key
+merge_request: 11325
+author:
diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb
index be97973c693..ceabf0caf31 100644
--- a/spec/helpers/projects_helper_spec.rb
+++ b/spec/helpers/projects_helper_spec.rb
@@ -70,6 +70,12 @@ describe ProjectsHelper do
expect(helper.project_list_cache_key(project)).to include(project.namespace.cache_key)
end
+ it "includes the parent namespace in case of subgroup" do
+ project = create(:project, group: create(:group, :nested))
+
+ expect(helper.project_list_cache_key(project)).to include("parent/#{project.namespace.parent.path}")
+ end
+
it "includes the project" do
expect(helper.project_list_cache_key(project)).to include(project.cache_key)
end
diff --git a/spec/models/namespace_spec.rb b/spec/models/namespace_spec.rb
index 8624616316c..ca61e34b78e 100644
--- a/spec/models/namespace_spec.rb
+++ b/spec/models/namespace_spec.rb
@@ -332,4 +332,10 @@ describe Namespace, models: true do
it { expect(group.all_projects.to_a).to eq([project2, project1]) }
end
+
+ describe '#parent_full_path' do
+ let(:namespace) { create(:group, :nested) }
+
+ it { expect(namespace.parent_full_path).to eq(namespace.parent.path) }
+ end
end