#34849: Appending django.contrib.postgres to the INSTALLED_APPS via @modify_settings crashes. -------------------------------------+------------------------------------- Reporter: Mariusz | Owner: nobody Felisiak | Type: Bug | Status: new Component: Database | Version: 5.0 layer (models, ORM) | Severity: Release | Keywords: blocker | Triage Stage: | Has patch: 0 Unreviewed | Needs documentation: 0 | Needs tests: 0 Patch needs improvement: 0 | Easy pickings: 0 UI/UX: 0 | -------------------------------------+------------------------------------- Appending `django.contrib.postgres` to the `INSTALLED_APPS` via `@modify_settings` crashes with: {{{ RuntimeWarning: Accessing the database during app initialization is discouraged. To fix this warning, avoid executing queries in AppConfig.ready() or when your app modules are imported. }}} Check out: {{{ ./runtests.py postgres_tests ... ====================================================================== ERROR: test_register_serializer_for_migrations (postgres_tests.test_apps.PostgresConfigTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python3.10/unittest/case.py", line 59, in testPartExecutor yield File "/usr/local/lib/python3.10/unittest/case.py", line 591, in run self._callTestMethod(testMethod) File "/usr/local/lib/python3.10/unittest/case.py", line 549, in _callTestMethod method() File "/django/tests/postgres_tests/test_apps.py", line 64, in test_register_serializer_for_migrations with self.modify_settings(INSTALLED_APPS={"append": "django.contrib.postgres"}): File "/django/django/test/utils.py", line 405, in __enter__ return self.enable() File "/django/django/test/utils.py", line 587, in enable super().enable() File "/django/django/test/utils.py", line 474, in enable apps.set_installed_apps(self.options["INSTALLED_APPS"]) File "/django/django/apps/registry.py", line 362, in set_installed_apps self.populate(installed) File "/django/django/apps/registry.py", line 124, in populate app_config.ready() File "/django/django/contrib/postgres/apps.py", line 71, in ready register_type_handlers(conn) File "/django/django/contrib/postgres/signals.py", line 40, in register_type_handlers oids, array_oids = get_hstore_oids(connection.alias) File "/django/django/contrib/postgres/signals.py", line 24, in get_hstore_oids return get_type_oids(connection_alias, "hstore") File "/django/django/contrib/postgres/signals.py", line 10, in get_type_oids cursor.execute( File "/django/django/db/backends/utils.py", line 77, in execute return self._execute_with_wrappers( File "/django/django/db/backends/utils.py", line 90, in _execute_with_wrappers return executor(sql, params, many, context) File "/django/django/db/backends/utils.py", line 94, in _execute warnings.warn(self.APPS_NOT_READY_WARNING_MSG, category=RuntimeWarning) RuntimeWarning: Accessing the database during app initialization is discouraged. To fix this warning, avoid executing queries in AppConfig.ready() or when your app modules are imported.
====================================================================== ERROR: test_register_type_handlers_connection (postgres_tests.test_apps.PostgresConfigTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python3.10/unittest/case.py", line 59, in testPartExecutor yield File "/usr/local/lib/python3.10/unittest/case.py", line 591, in run self._callTestMethod(testMethod) File "/usr/local/lib/python3.10/unittest/case.py", line 549, in _callTestMethod method() File "/django/tests/postgres_tests/test_apps.py", line 36, in test_register_type_handlers_connection with modify_settings(INSTALLED_APPS={"append": "django.contrib.postgres"}): File "/django/django/test/utils.py", line 405, in __enter__ return self.enable() File "/django/django/test/utils.py", line 587, in enable super().enable() File "/django/django/test/utils.py", line 474, in enable apps.set_installed_apps(self.options["INSTALLED_APPS"]) File "/django/django/apps/registry.py", line 362, in set_installed_apps self.populate(installed) File "/django/django/apps/registry.py", line 124, in populate app_config.ready() File "/django/django/contrib/postgres/apps.py", line 71, in ready register_type_handlers(conn) File "/django/django/contrib/postgres/signals.py", line 40, in register_type_handlers oids, array_oids = get_hstore_oids(connection.alias) File "/django/django/contrib/postgres/signals.py", line 24, in get_hstore_oids return get_type_oids(connection_alias, "hstore") File "/django/django/contrib/postgres/signals.py", line 10, in get_type_oids cursor.execute( File "/django/django/db/backends/utils.py", line 77, in execute return self._execute_with_wrappers( File "/django/django/db/backends/utils.py", line 90, in _execute_with_wrappers return executor(sql, params, many, context) File "/django/django/db/backends/utils.py", line 94, in _execute warnings.warn(self.APPS_NOT_READY_WARNING_MSG, category=RuntimeWarning) RuntimeWarning: Accessing the database during app initialization is discouraged. To fix this warning, avoid executing queries in AppConfig.ready() or when your app modules are imported. ---------------------------------------------------------------------- Ran 590 tests in 1.840s FAILED (errors=2, skipped=8, expected failures=3) }}} `@modify_settings` repopulates apps that register type handlers and hits the database to select OIDs (if not cached). Regression in fbd16438f46bc2128926958ad24331da5d1b406f (#33143). -- Ticket URL: <https://code.djangoproject.com/ticket/34849> 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 django-updates+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/0107018aac3d343c-df6a3e26-99c7-4683-ad6a-0603a34fa903-000000%40eu-central-1.amazonses.com.