#35967: TransactionTestCase.serialized_rollback reads from real database rather
than test when using read replica for a model instance created in a
migration with a ManyToManyField
-------------------------------------+-------------------------------------
     Reporter:  Jake Howard          |                    Owner:  Simon
                                     |  Charette
         Type:  Bug                  |                   Status:  closed
    Component:  Testing framework    |                  Version:  dev
     Severity:  Normal               |               Resolution:  fixed
     Keywords:                       |             Triage Stage:  Ready for
                                     |  checkin
    Has patch:  1                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Comment (by Mariusz Felisiak <felisiak.mariusz@…>):

 In [changeset:"923c5daa10a255b23357b047fef530a73ce09129" 923c5daa]:
 {{{#!CommitTicketReference repository=""
 revision="923c5daa10a255b23357b047fef530a73ce09129"
 [5.2.x] Fixed #35967 -- Deferred test suite fixtures serialization after
 all dbs setup.

 While the top-level objects fed to serialization are bound to the test
 database being created nothing prevents code invoked during
 serialization from performing queries against other connections entries
 that haven't been swapped yet.

 The reported example of that is a database router directing all reads to
 a test mirror for a set of models involving auto-created many-to-many
 fields. It might be tempting to address the many-to-many field case but
 this a symptom of a larger problem where the test framework yields the
 flow execution to user code that could interact with non-test databases
 in unexpected ways.

 Deferring test database fixture serialization until the point where all
 connections entries have been swapped for their test equivalent ensures
 that no code triggered during serialization can interact with non-test
 databases.

 Thanks Jake Howard for the report and Jacob Walls for the initial
 investigation.

 Backport of dc69a63f844b2ef3bc3371edde91644cf0bef0ee from main
 }}}
-- 
Ticket URL: <https://code.djangoproject.com/ticket/35967#comment:16>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/django-updates/010701950ecb7718-346e1810-50ea-475a-b2f9-b4b9d3528fa6-000000%40eu-central-1.amazonses.com.

Reply via email to