Commit 35423f6f authored by Jannis Leidel's avatar Jannis Leidel
Browse files

[1.4.X] 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.
parent ffe620f2
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -190,8 +190,8 @@ class CachedFilesMixin(object):
        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())
@@ -240,9 +240,12 @@ class CachedFilesMixin(object):
                        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):
    """