Commit 5d4e02f1 authored by Luke Duncalfe's avatar Luke Duncalfe

Handle blank projects in CommitCollection#enrich!

A project is needed in order to fetch data from gitaly. Projects can be
absent from commits in certain rare situations (like when viewing a MR
of a deleted fork). In these cases, assume that the enriched data is not
needed.

See this comment:

https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/26144#note_152191106

"It's led to a dilemma about where to "fix" this in code. I'm going
to fix it by allowing CommitCollection#enrich! to just return unenriched
commits when a project is missing, essentially "silently failing". I
hope this is the right decision. It's going with the assumption that
calls in these situations in the future are not needing the full data.
The alternative would be to allow CommitCollection#enrich! to still
error, but handle it in the methods that call #enrich!, however that
might lead to brittleness in future when working with project-less MRs."
parent 0420c239
...@@ -45,7 +45,11 @@ class CommitCollection ...@@ -45,7 +45,11 @@ class CommitCollection
# Batch load any commits that are not backed by full gitaly data, and # Batch load any commits that are not backed by full gitaly data, and
# replace them in the collection. # replace them in the collection.
def enrich! def enrich!
return self if fully_enriched? # A project is needed in order to fetch data from gitaly. Projects
# can be absent from commits in certain rare situations (like when
# viewing a MR of a deleted fork). In these cases, assume that the
# enriched data is not needed.
return self if project.blank? || fully_enriched?
# Batch load full Commits from the repository # Batch load full Commits from the repository
# and map to a Hash of id => Commit # and map to a Hash of id => Commit
......
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