Closed
Description
Checklist
- I have verified that that issue exists against the
master
branch of Django REST framework. - I have searched for similar issues in both open and closed tickets and cannot find a duplicate.
- This is not a usage question. (Those should be directed to the discussion group instead.)
- This cannot be dealt with as a third party library. (We prefer new functionality to be in the form of third party libraries where possible.)
- I have reduced the issue to the simplest possible case.
- I have included a failing test as a pull request. (If you are unable to do so we can still accept the issue.)
Steps to reproduce
- Have a project with two db connections setup with ATOMIC_REQUESTS = True
- Have a view that makes a change in the non-default connection and then raises some APIException (I tested with ValidationError)
- Check to see if the change was committed
Expected behavior
The transaction should not be committed
Actual behavior
The transaction is committed
What I saw in the code
- exception_handler is using the function set_rollback() -
https://github.com/encode/django-rest-framework/blob/master/rest_framework/views.py#L98 - set_rollback only takes the default connection into account
https://github.com/encode/django-rest-framework/blob/master/rest_framework/views.py#L65
def set_rollback():
atomic_requests = connection.settings_dict.get('ATOMIC_REQUESTS', False)
if atomic_requests and connection.in_atomic_block:
transaction.set_rollback(True)
Metadata
Metadata
Assignees
Labels
No labels