Migrate compare_source_branch to use only Gitaly
Initially expected this to be a full blown migration, but that wasn't the case as we could fetch to a reference that would be deleted after the instanciation of the Diff object. This is a racy RPC, as #delete_refs is called and garbage collections runs right than, the commit can't be found later. Closes https://gitlab.com/gitlab-org/gitaly/issues/771
This commit is contained in:
parent
26c9d71666
commit
d65db552af
|
|
@ -1181,18 +1181,18 @@ module Gitlab
|
|||
end
|
||||
|
||||
def compare_source_branch(target_branch_name, source_repository, source_branch_name, straight:)
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
with_repo_branch_commit(source_repository, source_branch_name) do |commit|
|
||||
break unless commit
|
||||
tmp_ref = "refs/tmp/#{SecureRandom.hex}"
|
||||
|
||||
Gitlab::Git::Compare.new(
|
||||
self,
|
||||
target_branch_name,
|
||||
commit.sha,
|
||||
straight: straight
|
||||
)
|
||||
end
|
||||
end
|
||||
return unless fetch_source_branch!(source_repository, source_branch_name, tmp_ref)
|
||||
|
||||
Gitlab::Git::Compare.new(
|
||||
self,
|
||||
target_branch_name,
|
||||
tmp_ref,
|
||||
straight: straight
|
||||
)
|
||||
ensure
|
||||
delete_refs(tmp_ref)
|
||||
end
|
||||
|
||||
def write_ref(ref_path, ref, old_ref: nil, shell: true)
|
||||
|
|
|
|||
Loading…
Reference in New Issue