• Stan Hu's avatar
    Optimize ref name lookups in archive downloads · 89e7e0a1
    Stan Hu authored
    When a user requests an archive download, `RepositoriesController`
    attempts to extract the given ref by finding the longest match of
    available branch and tag names. This is unnecessary work because unlike
    other controllers, the ref name isn't ambiguous. The `id` parameter
    takes the from `:ref/:filename.ext`, where `:ref` can contain any number
    of slashes, and `:filename` is simply a base filename with no slashes.
    
    We can optimize this by doing a greedy match for the reference and using
    the last part as the filename. This avoid having to call out to Redis
    and load large sets of data.
    
    Relates to https://gitlab.com/gitlab-com/gl-infra/scalability/issues/124
    89e7e0a1
repositories_controller.rb 3.15 KB