Content
View differences
Updated by Pavel Balashou 10 months ago
### Steps to reproduce
1. Add a file link to a workpackage
2. Remove file on Storage side. So, file link is gray.
3. Try to copy project. It should be successful.
4. See the error in logs/appsignal.
Unknown
### What is the buggy behavior?
<br> Unkown
### What is the expected behavior?
<br>
### Technical details
See https://github.com/opf/openproject/blob/6888f4b28af4ad2ab2d7596ed6eb700711bf0c7b/modules/storages/app/services/storages/file\_links/copy\_file\_links\_service.rb
On copying file links we do not handle case when there is no file on storage side anymore.
`FilesInfoQuery` responds with a `Results::StorageFileInfo` whether file exists or not. But in one case there is location present and in other there is none. So, probably in this case we should just copy a file link without corresponding deleted file. Unkown
### **Logs**
<br>
```text
undefined method 'gsub' for nil
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:115 block in Storages::FileLinks::CopyFileLinksService#build_location_map
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:114 Array#to_h
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:114 Storages::FileLinks::CopyFileLinksService#build_location_map
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:84 block (2 levels) in Storages::FileLinks::CopyFileLinksService#create_managed_file_links
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:82 block in Storages::FileLinks::CopyFileLinksService#create_managed_file_links
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:80 Storages::FileLinks::CopyFileLinksService#create_managed_file_links
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:69 Storages::FileLinks::CopyFileLinksService#copy_file_links
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:58 block (2 levels) in Storages::FileLinks::CopyFileLinksService#call
lib/open_project/locale_helper.rb:36 OpenProject::LocaleHelper#with_locale_for
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:56 block in Storages::FileLinks::CopyFileLinksService#call
modules/storages/app/common/storages/tagged_logging.rb:38 Storages::TaggedLogging#with_tagged_logger
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:49 Storages::FileLinks::CopyFileLinksService#call
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:37 Storages::FileLinks::CopyFileLinksService.call
modules/storages/app/workers/storages/copy_project_folders_job.rb:53 Storages::CopyProjectFoldersJob#perform
app/workers/shared_job_setup.rb:59 block in SharedJobSetup#prepare_job_context
app/workers/shared_job_setup.rb:76 SharedJobSetup#with_clean_request_store
app/workers/shared_job_setup.rb:55 SharedJobSetup#prepare_job_context
vendor/plugins/openproject-multitenancy/app/extenders/workers/delayed_job_extender.rb:14 block in Multitenancy::JobWithSchemaData::ClassMethods#execute
vendor/plugins/openproject-multitenancy/app/extenders/workers/delayed_job_extender.rb:13 Multitenancy::JobWithSchemaData::ClassMethods#execute
```
https://appsignal.com/openproject-gmbh/sites/673afebf83eb6776b27e7735/exceptions/incidents/695
<br>
1. Add a file link to a workpackage
2. Remove file on Storage side. So, file link is gray.
3. Try to copy project. It should be successful.
4. See the error in logs/appsignal.
<br>
### What is the expected behavior?
<br>
### Technical details
See https://github.com/opf/openproject/blob/6888f4b28af4ad2ab2d7596ed6eb700711bf0c7b/modules/storages/app/services/storages/file\_links/copy\_file\_links\_service.rb
On copying file links we do not handle case when there is no file on storage side anymore.
`FilesInfoQuery` responds with a `Results::StorageFileInfo` whether file exists or not. But in one case there is location present and in other there is none. So, probably in this case we should just copy a file link without corresponding deleted file.
### **Logs**
<br>
```text
undefined method 'gsub' for nil
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:115 block in Storages::FileLinks::CopyFileLinksService#build_location_map
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:114 Array#to_h
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:114 Storages::FileLinks::CopyFileLinksService#build_location_map
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:84 block (2 levels) in Storages::FileLinks::CopyFileLinksService#create_managed_file_links
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:82 block in Storages::FileLinks::CopyFileLinksService#create_managed_file_links
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:80 Storages::FileLinks::CopyFileLinksService#create_managed_file_links
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:69 Storages::FileLinks::CopyFileLinksService#copy_file_links
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:58 block (2 levels) in Storages::FileLinks::CopyFileLinksService#call
lib/open_project/locale_helper.rb:36 OpenProject::LocaleHelper#with_locale_for
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:56 block in Storages::FileLinks::CopyFileLinksService#call
modules/storages/app/common/storages/tagged_logging.rb:38 Storages::TaggedLogging#with_tagged_logger
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:49 Storages::FileLinks::CopyFileLinksService#call
modules/storages/app/services/storages/file_links/copy_file_links_service.rb:37 Storages::FileLinks::CopyFileLinksService.call
modules/storages/app/workers/storages/copy_project_folders_job.rb:53 Storages::CopyProjectFoldersJob#perform
app/workers/shared_job_setup.rb:59 block in SharedJobSetup#prepare_job_context
app/workers/shared_job_setup.rb:76 SharedJobSetup#with_clean_request_store
app/workers/shared_job_setup.rb:55 SharedJobSetup#prepare_job_context
vendor/plugins/openproject-multitenancy/app/extenders/workers/delayed_job_extender.rb:14 block in Multitenancy::JobWithSchemaData::ClassMethods#execute
vendor/plugins/openproject-multitenancy/app/extenders/workers/delayed_job_extender.rb:13 Multitenancy::JobWithSchemaData::ClassMethods#execute
```
https://appsignal.com/openproject-gmbh/sites/673afebf83eb6776b27e7735/exceptions/incidents/695
<br>