1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2024-09-19 10:50:24 -04:00

Merge pull request #10853 from DeterminateSystems/thread-safe-srcToStore

Make EvalState::srcToStore thread-safe
This commit is contained in:
Robert Hensing 2024-06-06 19:31:46 +02:00 committed by GitHub
commit e1b3716d50
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 5 additions and 5 deletions

View file

@ -2470,10 +2470,10 @@ StorePath EvalState::copyPathToStore(NixStringContext & context, const SourcePat
if (nix::isDerivation(path.path.abs()))
error<EvalError>("file names are not allowed to end in '%1%'", drvExtension).debugThrow();
auto i = srcToStore.find(path);
auto dstPathCached = get(*srcToStore.lock(), path);
auto dstPath = i != srcToStore.end()
? i->second
auto dstPath = dstPathCached
? *dstPathCached
: [&]() {
auto dstPath = fetchToStore(
*store,
@ -2484,7 +2484,7 @@ StorePath EvalState::copyPathToStore(NixStringContext & context, const SourcePat
nullptr,
repair);
allowPath(dstPath);
srcToStore.insert_or_assign(path, dstPath);
srcToStore.lock()->try_emplace(path, dstPath);
printMsg(lvlChatty, "copied source '%1%' -> '%2%'", path, store->printStorePath(dstPath));
return dstPath;
}();

View file

@ -306,7 +306,7 @@ private:
/* Cache for calls to addToStore(); maps source paths to the store
paths. */
std::map<SourcePath, StorePath> srcToStore;
Sync<std::map<SourcePath, StorePath>> srcToStore;
/**
* A cache from path names to parse trees.