-
Daniel Tao yazdı
_populate() sets the populating attribute to prevent infinite recursion in case a urlconf includes itself. The flag is a threadlocal to avoid a race condition [1] where one thread sets the flag and another checks it, then proceeds to access data that's supposed to be populated (e.g. _reverse_dict) but isn't yet. The potential still exists for a thread to set the threadlocal, then be interrupted by a signal such as SIGALRM and raise before resetting the threadlocal flag. In this scenario, subsequent calls to _populate() in the same thread will short-circuit erroneously. The bulk of the method was already wrapped in a try/finally in df41b5a0, but since a signal interrupt can occur at any line executed by the interpreter, this moves up the try to ensure threadlocal gets reset. [1]: https://groups.google.com/d/msg/django-developers/D_bIeinKHjE/4NmVQUJqAgAJ
6f7279c4
Adı |
Son kayıt (commit)
|
Son güncelleme |
---|---|---|
.tx | ||
django | ||
docs | ||
extras | ||
js_tests | ||
scripts | ||
tests | ||
.editorconfig | ||
.eslintignore | ||
.eslintrc | ||
.gitattributes | ||
.gitignore | ||
.hgignore | ||
AUTHORS | ||
CONTRIBUTING.rst | ||
Gruntfile.js | ||
INSTALL | ||
LICENSE | ||
LICENSE.python | ||
MANIFEST.in | ||
README.rst | ||
package.json | ||
setup.cfg | ||
setup.py | ||
tox.ini |