[libcxx-commits] [libcxx] [libc++][lit] Atomically update the persistent cache (PR #66538)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Sep 15 14:06:05 PDT 2023
================
@@ -69,8 +69,12 @@ def f(config, *args, **kwargs):
if cacheKey not in cache:
cache[cacheKey] = function(config, *args, **kwargs)
# Update the persistent cache so it knows about the new key
- with open(persistentCache, "wb") as cacheFile:
+ # We write to a temporary file and rename the result to ensure
+ # that the cache is not corrupted when running the test suite
+ # with multiple shards.
+ with open(persistentCache + ".tmp", "wb") as cacheFile:
pickle.dump(cache, cacheFile)
+ os.replace(persistentCache + ".tmp", persistentCache)
return cache[cacheKey]
----------------
ldionne wrote:
@arichardson Ah, thanks for clarifying. Yes I remember that Lit feature.
@EricWF I kind of agree here, I think I would prefer just making the cache be a unique file. That way each shard would have its complete cache and it wouldn't be shared with other shards. @arichardson that would work, right?
https://github.com/llvm/llvm-project/pull/66538
More information about the libcxx-commits
mailing list