Lazily construct avatar and search registries on access.

Review Request #10512 — Created April 4, 2019 and submitted — Latest diff uploaded

Information

Review Board
release-4.0.x

Reviewers

We'd previously import and construct the avatar and search registries
when loading the reviewboard.avatars and reviewboard.search apps for
the first time. In modern versions of Django, this breaks app
initialization, since the imports end up importing other uninitialized
apps, resulting in hard-to-diagnose error messages.

To work around this, we now lazily import and construct the registries
when they're first needed. This has a side benefit of reducing the
startup load, even if just a bit. To do this, we use the new
lazy_import_registry() function in Djblets, which will construct a
wrapper around on the registries that does the import and construction
on first access, which will be some time after Django initialization has
completed.

Unit tests pass on Django 1.6 and 1.11 (with other in-progress changes).

Commits

Files