id,summary,reporter,owner,description,type,status,component,version,severity,resolution,keywords,cc,stage,has_patch,needs_docs,needs_tests,needs_better_patch,easy,ui_ux 20373,Simple Multi-DB read replica unit test raises TransactionManagementError,TTimo,nobody,"(I posted this on the ML initially, but I suspect it's a bug in the testing framework. A complete example is attached. Empty unit test, with no routers and a read replica DB setup gives a TransactionManagementError) -- I started assessing multi-db support in Django 1.5.1, I'm interested in having read replicas and a write master. I've figured out all the easy stuff: using TEST_MIRROR in the DATABASES setting, writing a simple router that splits read and write traffic, all according to the documentation. I can run a test server and issue some calls manually, but I have not been able to run simple unit tests. The most simple test I can build fails during _pre_setup() with a ""TransactionManagementError: Transaction managed block ended with pending COMMIT/ROLLBACK"" My databases are MySQL EC2 RDS instances, the replication is working fine, the tables are InnoDB etc. I know there is active development around transaction management code in Django lately, so maybe I've stumbled on a bug? I'm attaching a simple test setup that should make it easy to reproduce. Any advice would be greatly appreciated. Cheers, TTimo {{{ ./manage.py test readreplica Creating test database for alias 'default'... E ====================================================================== ERROR: testTest (readreplica.tests.Test) ---------------------------------------------------------------------- Traceback (most recent call last): File ""/usr/local/lib/python2.7/dist-packages/django/test/testcases.py"", line 240, in __call__ self._pre_setup() File ""/usr/local/lib/python2.7/dist-packages/django/test/testcases.py"", line 462, in _pre_setup self._fixture_setup() File ""/usr/local/lib/python2.7/dist-packages/django/test/testcases.py"", line 822, in _fixture_setup if not connections_support_transactions(): File ""/usr/local/lib/python2.7/dist-packages/django/test/testcases.py"", line 809, in connections_support_transactions for conn in connections.all()) File ""/usr/local/lib/python2.7/dist-packages/django/test/testcases.py"", line 809, in for conn in connections.all()) File ""/usr/local/lib/python2.7/dist-packages/django/utils/functional.py"", line 48, in __get__ res = instance.__dict__[self.func.__name__] = self.func(instance) File ""/usr/local/lib/python2.7/dist-packages/django/db/backends/__init__.py"", line 627, in supports_transactions self.connection.leave_transaction_management() File ""/usr/local/lib/python2.7/dist-packages/django/db/backends/__init__.py"", line 319, in leave_transaction_management ""Transaction managed block ended with pending COMMIT/ROLLBACK"") TransactionManagementError: Transaction managed block ended with pending COMMIT/ROLLBACK ---------------------------------------------------------------------- Ran 0 tests in 0.084s FAILED (errors=1) Destroying test database for alias 'default'... }}}",Bug,closed,Testing framework,1.5,Normal,needsinfo,,,Unreviewed,0,0,0,0,0,0