#31254: "populate() isn't reentrant" masks underlying error
-----------------------------------------+------------------------
               Reporter:  TK-23          |          Owner:  nobody
                   Type:  Uncategorized  |         Status:  new
              Component:  Core (Other)   |        Version:  2.2
               Severity:  Normal         |       Keywords:
           Triage Stage:  Unreviewed     |      Has patch:  0
    Needs documentation:  0              |    Needs tests:  0
Patch needs improvement:  0              |  Easy pickings:  0
                  UI/UX:  0              |
-----------------------------------------+------------------------
 I'm new to reporting bugs, but have struggled with this one enough that I
 thought I would formally document an issue we've seen.

 In django/django/apps/registry.py
 
(https://github.com/django/django/blob/20ba3ce4ac8e8438070568ffba76f7d8d4986a53/django/apps/registry.py#L83)
 there is a line of code that can raise an error when running simple
 commands like {{{python manage.py runserver}}}:

 {{{
 if self.loading:
                 # Prevent reentrant calls to avoid running
 AppConfig.ready()
                 # methods twice.
                 raise RuntimeError("populate() isn't reentrant")
 }}}

 The problem is that this generic error can mask the true reason why django
 will not start up (I've seen the true reason be something like a problem
 with a version of a Python package needing to be updated, or an import of
 a module that does not exist elsewhere in the code). Based on a
 stackoverflow response (https://stackoverflow.com/questions/27093746
 /django-stops-working-with-runtimeerror-populate-isnt-reentrant) I've
 learned to comment out {{{raise RuntimeError("populate() isn't
 reentrant")}}} and replace it with {{{self.app_configs={} }}}

 This way the true error will be exposed when starting up django. I do not
 know the best way to handle this but before I found this stackoverflow
 post, we lost a lot of time trying to debug issues. Even knowing this
 workaround it is a hassle to adjust the django code to see the true error.

 I can provide a link to our opensource project with a branch set up to
 replicate the error if that is helpful.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/31254>
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/048.1c30b1cb53e3e95400a3baee9a5714d4%40djangoproject.com.

Reply via email to