summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/template/loaders/cached.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/django/template/loaders/cached.py b/django/template/loaders/cached.py
index 3ed9cf3bbf..4c25acd599 100644
--- a/django/template/loaders/cached.py
+++ b/django/template/loaders/cached.py
@@ -19,8 +19,12 @@ class Loader(BaseLoader):
def loaders(self):
# Resolve loaders on demand to avoid circular imports
if not self._cached_loaders:
+ # Set self._cached_loaders atomically. Otherwise, another thread
+ # could see an incomplete list. See #17303.
+ cached_loaders = []
for loader in self._loaders:
- self._cached_loaders.append(find_template_loader(loader))
+ cached_loaders.append(find_template_loader(loader))
+ self._cached_loaders = cached_loaders
return self._cached_loaders
def find_template(self, name, dirs=None):