test: get_or_upsert concurrent use #179
Open
+38
−5
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.
Description
This PR acts as a reproducer for
get_or_upsert
raisingIntegrityErrors
forUniqueConstraint
when sending multiple requests at once.I added a
UniqueConstraint
to theuser_account_role
table which basically means, that one cannot have the same role multiple times.In the controller I needed to remove the
if
statement, otherwise the get_or_upsert would not create anything in this case. However there's another bug in the original version, ascreated
is not defined if the first condition is false.The test contains 1 or 4 equal queries, two times in a row. When making a single request (which assigns the tag) the second request reports that the role was already assigned and succeeds.
In case of 4 queries at the same time, only the first query succeeds, the remaining three fail.
This PR is not meant to get merged like this, but as a starting point for discussion.