Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Set the post process cache when finished instead of one by one.

This should prevent a race condition if running collectstatic is
canceled or its cache is accessed from other processes, leaving the
cache in a corrupt state.
  • Loading branch information...
commit 1c1a22963236c6015724bfbf43dd56dbe40a6cf9 1 parent c2e1ecb
@jezdez jezdez authored
Showing with 6 additions and 3 deletions.
  1. +6 −3 django/contrib/staticfiles/storage.py
View
9 django/contrib/staticfiles/storage.py
@@ -189,8 +189,8 @@ def post_process(self, paths, dry_run=False, **options):
if dry_run:
return
- # delete cache of all handled paths
- self.cache.delete_many([self.cache_key(path) for path in paths])
+ # where to store the new paths
+ hashed_paths = {}
# build a list of adjustable files
matches = lambda path: matches_patterns(path, self._patterns.keys())
@@ -239,9 +239,12 @@ def post_process(self, paths, dry_run=False, **options):
hashed_name = force_unicode(saved_name.replace('\\', '/'))
# and then set the cache accordingly
- self.cache.set(self.cache_key(name), hashed_name)
+ hashed_paths[self.cache_key(name)] = hashed_name
yield name, hashed_name, processed
+ # Finally set the cache
+ self.cache.set_many(hashed_paths)
+
class CachedStaticFilesStorage(CachedFilesMixin, StaticFilesStorage):
"""

1 comment on commit 1c1a229

Please sign in to comment.
Something went wrong with that request. Please try again.