Fix: Occasional IntegrityError when saving 'new' assets #30
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Downloading asset files can take a while, especially if Bynder is under strain or the connection to Bynder is poor. If multiple editors are working in Wagtail at once and happen choose the same (new) asset at around the same time, they unknowingly take part in a little race: The first request to finish downloading the file and saving the object will succeed, but the other will fail with an
IntegrityError
because, by the time it tries to write to the DB, an object with the samebynder_id
already exists.A similar issue can also occur whilst saving the object, because it can take a while to copy the file from memory to media storage (which happens before attempting to save to the database). So, we need to account for
IntegrityError
being raised at that later stage also. And ensure the newly-transferred redundant file is deleted from storage.