Skip to content

Fix 404s with snippet uploads in object storage

Stan Hu requested to merge sh-fix-snippet-uploads-path-lookup into master

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 database 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

Edited by Stan Hu

Merge request reports