element-hq / element-hq/synapse
Concurrent downloads of remote media can lead to orphaned files in storage providers.
- Dominant language
- Python
- Stars
- 4.6k
- Forks
- 600
- Avg merge
- 5d 22h
- Merged PRs (30d)
- 51
Description
This issue has been migrated from [#8692](https://github.com/matrix-org/synapse/issues/8692).
---
When running multiple media workers it is possible to end up with both fetching and persisting the same media. https://github.com/matrix-org/synapse/pull/8682 fixed it such that doing so a) didn't throw an error to the client and b) deleted the duplicated media from disk, however by this point the media is already queued up to be uploaded to s3.
We could change it to only upload to storage providers *after* persisting to the DB, however that runs the risk of having media in the DB that hasn't been uploaded to a storage provider if e.g. the worker dies half way through upload.
I think the "fix" here is to add a `delete_file` function to the storage provider interface that can be called to delete a file (or cancel its upload if it hasn't finished uploading).
Contributor guide
Assessment
This issue has not been assessed yet.