From f51779ee2518c961cf4c063e676ea328cb9ea6cf Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sun, 10 Aug 2025 21:40:03 +0200 Subject: [PATCH] RemoteStore::addToStoreFromDump(): Invalidate cache entry for added path --- src/libstore/include/nix/store/store-api.hh | 2 ++ src/libstore/remote-store.cc | 4 +++- src/libstore/store-api.cc | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/libstore/include/nix/store/store-api.hh b/src/libstore/include/nix/store/store-api.hh index 528375851..6393ccbc7 100644 --- a/src/libstore/include/nix/store/store-api.hh +++ b/src/libstore/include/nix/store/store-api.hh @@ -311,6 +311,8 @@ protected: LRUCache pathInfoCache; }; + void invalidatePathInfoCacheFor(const StorePath & path); + SharedSync state; std::shared_ptr diskCache; diff --git a/src/libstore/remote-store.cc b/src/libstore/remote-store.cc index 8c2f268c3..5694fa466 100644 --- a/src/libstore/remote-store.cc +++ b/src/libstore/remote-store.cc @@ -457,7 +457,9 @@ StorePath RemoteStore::addToStoreFromDump( } if (fsm != dumpMethod) unsupported("RemoteStore::addToStoreFromDump doesn't support this `dumpMethod` `hashMethod` combination"); - return addCAToStore(dump, name, hashMethod, hashAlgo, references, repair)->path; + auto storePath = addCAToStore(dump, name, hashMethod, hashAlgo, references, repair)->path; + invalidatePathInfoCacheFor(storePath); + return storePath; } void RemoteStore::addToStore(const ValidPathInfo & info, Source & source, RepairFlag repair, CheckSigsFlag checkSigs) diff --git a/src/libstore/store-api.cc b/src/libstore/store-api.cc index dd8c39557..bd5ae9284 100644 --- a/src/libstore/store-api.cc +++ b/src/libstore/store-api.cc @@ -319,6 +319,11 @@ bool Store::PathInfoCacheValue::isKnownNow() return std::chrono::steady_clock::now() < time_point + ttl; } +void Store::invalidatePathInfoCacheFor(const StorePath & path) +{ + state.lock()->pathInfoCache.erase(path.to_string()); +} + std::map> Store::queryStaticPartialDerivationOutputMap(const StorePath & path) { std::map> outputs;