test: get_or_upsert concurrent use #179
Open
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_upsertraisingIntegrityErrorsforUniqueConstraintwhen sending multiple requests at once.I added a
UniqueConstraintto theuser_account_roletable which basically means, that one cannot have the same role multiple times.In the controller I needed to remove the
ifstatement, otherwise the get_or_upsert would not create anything in this case. However there's another bug in the original version, ascreatedis 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.