Merge branch 'fix/reduce-number-of-find-commit-for-log-tree' into 'master'

Reduce number of FindCommit calls from RefsController#logs_tree

Closes gitaly#1057

See merge request gitlab-org/gitlab-ce!17566
This commit is contained in:
Robert Speicher 2018-03-07 17:53:16 +00:00
commit 3da9cb6929
2 changed files with 7 additions and 6 deletions

View File

@ -651,14 +651,15 @@ class Repository
end
def last_commit_for_path(sha, path)
commit_by(oid: last_commit_id_for_path(sha, path))
commit = raw_repository.last_commit_for_path(sha, path)
::Commit.new(commit, @project) if commit
end
def last_commit_id_for_path(sha, path)
key = path.blank? ? "last_commit_id_for_path:#{sha}" : "last_commit_id_for_path:#{sha}:#{Digest::SHA1.hexdigest(path)}"
cache.fetch(key) do
raw_repository.last_commit_id_for_path(sha, path)
last_commit_for_path(sha, path)&.id
end
end

View File

@ -1443,12 +1443,12 @@ module Gitlab
end
end
def last_commit_id_for_path(sha, path)
def last_commit_for_path(sha, path)
gitaly_migrate(:last_commit_for_path) do |is_enabled|
if is_enabled
last_commit_for_path_by_gitaly(sha, path).id
last_commit_for_path_by_gitaly(sha, path)
else
last_commit_id_for_path_by_shelling_out(sha, path)
last_commit_for_path_by_rugged(sha, path)
end
end
end
@ -1896,7 +1896,7 @@ module Gitlab
end
def last_commit_for_path_by_rugged(sha, path)
sha = last_commit_id_for_path(sha, path)
sha = last_commit_id_for_path_by_shelling_out(sha, path)
commit(sha)
end