Task #1181

Updated by bmbouter over 6 years ago

A platform Celery task needs to exist which allows a single unit to be downloaded and saved. This task does not need a TaskStatus but it and does not need a reservation. reservation, so a generic Celery task will do. The task needs to know which unit to download and will simply download it and put it on disk. Any existing symlinks will already be pointing to its final location so moving it in place is all that is necessary for all repos associated with the unit to begin using it.

The lock requirement ensures that if multiple users request a file, the created download_unit tasks will be processed serially ensuring that the copy into place will not have any corruption due to concurrent writes. If those writes are from multiple machines to the same NFS backend bad things could happen. The lock tag for this type of task should be enough to guarantee it is unique in the catalog. I expect this to be the "unit id + the unit path". Together these should handle both ContentUnits and SharedContentUnits uniquely.