• Stan Hu's avatar
    Fix 404s with snippet uploads in object storage · 940ad0c7
    Stan Hu authored
    Previously, an HTTP request for
    `/uploads/-/system/personal_snippet/:snippet_id/:hash/:filename` would
    look for an uploader of `PersonalFileUploader` class and use
    `PersonalFileUploader#upload_paths` to search the datbase for one of the
    following paths:
    
    1. `:hash/:filename`
    2. `uploads/-/system/personal_snippet/:id/:hash/:filename`
    
    However, when the upload were stored in object storage,
    `PersonalFileUploader#store_dirs` stored the path as:
    
    `personal_snippet/:snippet_id/:hash`
    
    The extraneous `uploads/-/system` prefix prevented the path from being
    matched, and uploads in object storage would return a 404 error. Uploads
    in local storage would work fine.
    
    To fix this, we set the `#base_dir` properly so that `#upload_paths`
    generates the right value for object storage. Note that this also makes
    `#store_dirs` do the right thing in `FileUploader`.
    
    Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/52595
    940ad0c7