[libcxx-commits] [libcxx] [libc++][lit] Atomically update the persistent cache (PR #66538)
Alexander Richardson via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Sep 15 21:28:06 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]
----------------
arichardson wrote:
Yes that definitely works, the reason I didn't append the shard number is that I believe I'd need to change a bit more of the surrounding code to get the litConfig object.
https://github.com/llvm/llvm-project/pull/66538
More information about the libcxx-commits
mailing list