#35921: migration_test_data_persistence fails when running with parallelism > 1 and
Postgres
-------------------------------------+-------------------------------------
Reporter: Raphael Gaschignard | Owner: (none)
Type: Bug | Status: new
Component: Testing framework | Version: dev
Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Raphael Gaschignard):
* summary:
migration_test_data_persistence fails when running with parallelism >
1
=>
migration_test_data_persistence fails when running with parallelism >
1 and Postgres
Old description:
> Steps to reproduce:
>
> - Add the following file to `tests`, as `test_postgres.py`
>
> {{{
> import os
>
> from test_sqlite import * # NOQA
>
> DATABASES = {
> "default": {
> "ENGINE": "django.db.backends.postgresql",
> "USER": "user",
> "NAME": "django",
> "PASSWORD": "postgres",
> "HOST": "localhost",
> "PORT": 5432,
> "OPTIONS": {
> "server_side_binding": os.getenv("SERVER_SIDE_BINDING") ==
> "1",
> },
> },
> "other": {
> "ENGINE": "django.db.backends.postgresql",
> "USER": "user",
> "NAME": "django2",
> "PASSWORD": "postgres",
> "HOST": "localhost",
> "PORT": 5432,
> },
> }
> }}}
>
> - In `tests`, run the following:
>
> {{{
> python runtests.py --settings=test_postgres -k
> migration_test_data_persistence --parallel=2
> }}}
>
> An error occurs (for me at least) of the variety:
>
> {{{
> psycopg.errors.FeatureNotSupported: cannot truncate a table referenced in
> a foreign key constraint
> DETAIL: Table "model_package_advertisement_publications" references
> "model_package_publication".
> HINT: Truncate table "model_package_advertisement_publications" at the
> same time, or use TRUNCATE ... CASCADE.
> }}}
>
> Running with `--parallel=1` does not trigger this issue.
>
> This issue was introduced with the fix for #35660 (in commit
> 060a22ee2dde7aa29a5a29120087c4864887325)
New description:
Steps to reproduce:
- Add the following file to `tests`, as `test_postgres.py`
{{{
import os
from test_sqlite import * # NOQA
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"USER": "user",
"NAME": "django",
"PASSWORD": "postgres",
"HOST": "localhost",
"PORT": 5432,
"OPTIONS": {
"server_side_binding": os.getenv("SERVER_SIDE_BINDING") ==
"1",
},
},
"other": {
"ENGINE": "django.db.backends.postgresql",
"USER": "user",
"NAME": "django2",
"PASSWORD": "postgres",
"HOST": "localhost",
"PORT": 5432,
},
}
}}}
- In `tests`, run the following:
{{{
python runtests.py --settings=test_postgres -k
migration_test_data_persistence --parallel=2
}}}
An error occurs (for me at least) of the variety:
{{{
psycopg.errors.FeatureNotSupported: cannot truncate a table referenced in
a foreign key constraint
DETAIL: Table "model_package_advertisement_publications" references
"model_package_publication".
HINT: Truncate table "model_package_advertisement_publications" at the
same time, or use TRUNCATE ... CASCADE.
}}}
Running with `--parallel=1` does not trigger this issue. The issue
triggers for me in Postgres but not with SQLite
This issue was introduced with the fix for #35660 (in commit
060a22ee2dde7aa29a5a29120087c4864887325)
--
--
Ticket URL: <
https://code.djangoproject.com/ticket/35921#comment:4>
Django <
https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.