Skip to content

Fix incorrect prefix used in new uploads for personal snippets

Stan Hu requested to merge sh-fix-personal-snippet-uploads-object-storage into master

https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/24550 fixed the case where the wrong path on disk was being searched, but it inadvertently ommitted the /uploads/-/system prefix when rendering the Markdown for personal snippet uploads when they were stored directly in object storage.

A personal snippet path is stored using FileUploader#upload_path. The format for the path:

  • Local storage: :random_hex/:filename.
  • Object storage: personal_snippet/:id/:random_hex/:filename.

upload_paths represent the possible paths for a given identifier, which will vary depending on whether the file is stored in local or object storage. upload_path should match an element in upload_paths.

base_dir represents the path seen by the user in Markdown, and it should always be prefixed with uploads/-/system.

store_dirs represent the paths that are actually used on disk. For object storage, this should omit the prefix /uploads/-/system.

For example, consider the requested path /uploads/-/system/personal_snippet/172/ff4ad5c2/file.png.

For local storage:

  • base_dir: uploads/-/system/personal_snippet/172
  • upload_path: ff4ad5c2/file.png
  • upload_paths: ["ff4ad5c2/file.png", "personal_snippet/172/ff4ad5c2/file.png"]
  • store_dirs: {1=>"uploads/-/system/personal_snippet/172/ff4ad5c2", 2=>"personal_snippet/172/ff4ad5c2"}

For object storage:

  • upload_path: personal_snippet/172/ff4ad5c2/file.png

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/61671

Edited by Stan Hu

Merge request reports