From 021e8790c6091994d3b3e31cbf180939608698da Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Sun, 7 Apr 2019 20:55:29 -0700 Subject: [PATCH] Enable Gitaly FindCommit caching for TreeController Accessing /namespace/project/tree/master appears to query FindCommit 5 times with identical parameters. This reduces the number of FindCommit queries to 1. --- app/controllers/projects/tree_controller.rb | 2 ++ .../sh-add-gitaly-ref-name-caching-tree-controller.yml | 5 +++++ spec/controllers/projects/tree_controller_spec.rb | 2 ++ 3 files changed, 9 insertions(+) create mode 100644 changelogs/unreleased/sh-add-gitaly-ref-name-caching-tree-controller.yml diff --git a/app/controllers/projects/tree_controller.rb b/app/controllers/projects/tree_controller.rb index 90d53aa08ea..7509cc29a76 100644 --- a/app/controllers/projects/tree_controller.rb +++ b/app/controllers/projects/tree_controller.rb @@ -6,6 +6,8 @@ class Projects::TreeController < Projects::ApplicationController include CreatesCommit include ActionView::Helpers::SanitizeHelper + around_action :allow_gitaly_ref_name_caching, only: [:show] + before_action :require_non_empty_project, except: [:new, :create] before_action :assign_ref_vars before_action :assign_dir_vars, only: [:create_dir] diff --git a/changelogs/unreleased/sh-add-gitaly-ref-name-caching-tree-controller.yml b/changelogs/unreleased/sh-add-gitaly-ref-name-caching-tree-controller.yml new file mode 100644 index 00000000000..a051c1f70a8 --- /dev/null +++ b/changelogs/unreleased/sh-add-gitaly-ref-name-caching-tree-controller.yml @@ -0,0 +1,5 @@ +--- +title: Enable Gitaly FindCommit caching for TreeController +merge_request: 27100 +author: +type: performance diff --git a/spec/controllers/projects/tree_controller_spec.rb b/spec/controllers/projects/tree_controller_spec.rb index b15a2bc84a5..78201498eaa 100644 --- a/spec/controllers/projects/tree_controller_spec.rb +++ b/spec/controllers/projects/tree_controller_spec.rb @@ -16,6 +16,8 @@ describe Projects::TreeController do render_views before do + expect(::Gitlab::GitalyClient).to receive(:allow_ref_name_caching).and_call_original + get(:show, params: { namespace_id: project.namespace.to_param, -- GitLab