Commit c9472acb authored by Igor Drozdov's avatar Igor Drozdov

Merge branch '217570-improve-performance-for-blame-api' into 'master'

Lazy load commit date and authored date

Closes #217570

See merge request gitlab-org/gitlab!34181
parents 45b7fe40 b6f35556
---
title: Lazy load commit_date and authored_date on Commit
merge_request: 34181
author:
type: performance
...@@ -7,6 +7,7 @@ module Gitlab ...@@ -7,6 +7,7 @@ module Gitlab
include Gitlab::EncodingHelper include Gitlab::EncodingHelper
prepend Gitlab::Git::RuggedImpl::Commit prepend Gitlab::Git::RuggedImpl::Commit
extend Gitlab::Git::WrapsGitalyErrors extend Gitlab::Git::WrapsGitalyErrors
include Gitlab::Utils::StrongMemoize
attr_accessor :raw_commit, :head attr_accessor :raw_commit, :head
...@@ -231,6 +232,18 @@ module Gitlab ...@@ -231,6 +232,18 @@ module Gitlab
parent_ids.first parent_ids.first
end end
def committed_date
strong_memoize(:committed_date) do
init_date_from_gitaly(raw_commit.committer) if raw_commit
end
end
def authored_date
strong_memoize(:authored_date) do
init_date_from_gitaly(raw_commit.author) if raw_commit
end
end
# Returns a diff object for the changes from this commit's first parent. # Returns a diff object for the changes from this commit's first parent.
# If there is no parent, then the diff is between this commit and an # If there is no parent, then the diff is between this commit and an
# empty repo. See Repository#diff for keys allowed in the +options+ # empty repo. See Repository#diff for keys allowed in the +options+
...@@ -369,11 +382,9 @@ module Gitlab ...@@ -369,11 +382,9 @@ module Gitlab
# subject from the message to make it clearer when there's one # subject from the message to make it clearer when there's one
# available but not the other. # available but not the other.
@message = message_from_gitaly_body @message = message_from_gitaly_body
@authored_date = init_date_from_gitaly(commit.author)
@author_name = commit.author.name.dup @author_name = commit.author.name.dup
@author_email = commit.author.email.dup @author_email = commit.author.email.dup
@committed_date = init_date_from_gitaly(commit.committer)
@committer_name = commit.committer.name.dup @committer_name = commit.committer.name.dup
@committer_email = commit.committer.email.dup @committer_email = commit.committer.email.dup
@parent_ids = Array(commit.parent_ids) @parent_ids = Array(commit.parent_ids)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment