element-hq / element-hq/synapse

Concurrent downloads of remote media can lead to orphaned files in storage providers.

Open
#8,692 0 comments 0 reactions 0 assignees View on GitHub
z-bug z-p3
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.