AvatarUploader does not build the local file path properly for Uploads of some Groups

Error on attempt to migrate some Group avatar Uploads:

Errno::ENOENT: No such file or directory @ rb_sysopen - /opt/gitlab/embedded/service/gitlab-rails/public/uploads/-/system/group/730372/11415722-6-attskybox_production-avatar.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):178
	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>'

I'm not sure exactly where the fix should go, but I was able to migrate these Uploads by setting mount_point to "avatar" first.

Notice the path in the error is /opt/gitlab/embedded/service/gitlab-rails/public/uploads/-/system/group/730372/11415722-6-attskybox_production-avatar.png but should be /opt/gitlab/embedded/service/gitlab-rails/public/uploads/-/system/group/avatar/730372/11415722-6-attskybox_production-avatar.png.

cc @jprovaznik

Assignee Loading
Time tracking Loading