AttachmentUploader does not build the local file path properly for Attachments of at least some LegacyDiffNotes
Uploads with these IDs are unable to be migrated to object storage due this issue:
[2293755, 2293756, 2293758, 2294324, 2294599, 2294633, 2294785, 2294786, 2295122, 2295535, 2295564, 2297009, 2297208, 2297442, 2297604, 2297856, 2298425, 2298476, 2298582, 2298780, 2298836, 2299040, 2299379, 2299380, 2299454, 2299467, 2299468, 2299621, 2299622, 2299881, 2300131, 2300132, 2300245, 2300307, 2300495, 2300787, 2300844, 2301010, 2301055, 2301058, 2301212, 2301319, 2301322, 2301331, 2301388, 2301407, 2301478, 2301552]
When attempting to migrate Upload with ID 2293755
to object storage:
Errno::ENOENT: No such file or directory @ rb_sysopen - /opt/gitlab/embedded/service/gitlab-rails/public/uploads/-/system/legacy_diff_note/104322/non-resourceful-routes.png
from /opt/gitlab/embedded/lib/ruby/gems/2.4.0/gems/carrierwave-1.2.3/lib/carrierwave/sanitized_file.rb:164:in `initialize'
from /opt/gitlab/embedded/lib/ruby/gems/2.4.0/gems/carrierwave-1.2.3/lib/carrierwave/sanitized_file.rb:164:in `open'
from /opt/gitlab/embedded/lib/ruby/gems/2.4.0/gems/carrierwave-1.2.3/lib/carrierwave/sanitized_file.rb:164:in `read'
from /opt/gitlab/embedded/lib/ruby/gems/2.4.0/gems/carrierwave-1.2.3/lib/carrierwave/storage/fog.rb:326:in `store'
from /opt/gitlab/embedded/lib/ruby/gems/2.4.0/gems/carrierwave-1.2.3/lib/carrierwave/storage/fog.rb:78:in `store!'
from /opt/gitlab/embedded/service/gitlab-rails/app/uploaders/object_storage.rb:428:in `block (2 levels) in unsafe_migrate!'
from /opt/gitlab/embedded/lib/ruby/gems/2.4.0/gems/carrierwave-1.2.3/lib/carrierwave/uploader/callbacks.rb:15:in `with_callbacks'
from /opt/gitlab/embedded/service/gitlab-rails/app/uploaders/object_storage.rb:427:in `block in unsafe_migrate!'
from /opt/gitlab/embedded/lib/ruby/gems/2.4.0/gems/carrierwave-1.2.3/lib/carrierwave/uploader/callbacks.rb:15:in `with_callbacks'
from /opt/gitlab/embedded/service/gitlab-rails/app/uploaders/object_storage.rb:426:in `unsafe_migrate!'
from /opt/gitlab/embedded/service/gitlab-rails/app/uploaders/object_storage.rb:260:in `block in migrate!'
from /opt/gitlab/embedded/service/gitlab-rails/app/uploaders/object_storage.rb:405:in `with_exclusive_lease'
from /opt/gitlab/embedded/service/gitlab-rails/app/uploaders/object_storage.rb:259:in `migrate!'
from (irb):55:in `migrate_upload'
from (irb):226
from /opt/gitlab/embedded/lib/ruby/gems/2.4.0/gems/railties-4.2.10/lib/rails/commands/console.rb:110:in `start'
from /opt/gitlab/embedded/lib/ruby/gems/2.4.0/gems/railties-4.2.10/lib/rails/commands/console.rb:9:in `start'
from /opt/gitlab/embedded/lib/ruby/gems/2.4.0/gems/railties-4.2.10/lib/rails/commands/commands_tasks.rb:68:in `console'
from /opt/gitlab/embedded/lib/ruby/gems/2.4.0/gems/railties-4.2.10/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /opt/gitlab/embedded/lib/ruby/gems/2.4.0/gems/railties-4.2.10/lib/rails/commands.rb:17:in `<top (required)>'
from bin/rails:14:in `require'
from bin/rails:14:in `<main>'
Notice the path is different from Upload#absolute_path
, which looks like /opt/gitlab/embedded/service/gitlab-rails/public/uploads/-/system/note/attachment/104322/non-resourceful-routes.png
. The file exists at this path.
cc @jprovaznik