libstore: asyncify LocalStore::addValidPath

Change-Id: Iada9f7647b6913d267b061421d7b3d7b1bed8343
This commit is contained in:
eldritch horrors
2025-03-05 18:49:45 +01:00
parent fc0bea42c2
commit 9d52d0db79
2 changed files with 8 additions and 5 deletions
+6 -4
View File
@@ -863,9 +863,9 @@ void LocalStore::cacheDrvOutputMapping(
}
uint64_t LocalStore::addValidPath(DBState & state,
kj::Promise<Result<uint64_t>> LocalStore::addValidPath(DBState & state,
const ValidPathInfo & info, bool checkOutputs)
{
try {
if (info.ca.has_value() && !info.isContentAddressed(*this))
throw Error("cannot add path '%s' to the Nix store because it claims to be content-addressed but isn't",
printStorePath(info.path));
@@ -910,7 +910,9 @@ uint64_t LocalStore::addValidPath(DBState & state,
PathInfoCacheValue{ .value = std::make_shared<const ValidPathInfo>(info) });
}
return id;
co_return id;
} catch (...) {
co_return result::current_exception();
}
@@ -1210,7 +1212,7 @@ try {
if (isValidPath_(*state, i.path))
updatePathInfo(*state, i);
else
addValidPath(*state, i, false);
TRY_AWAIT(addValidPath(*state, i, false));
paths.insert(i.path);
}
+2 -1
View File
@@ -353,7 +353,8 @@ private:
uint64_t queryValidPathId(DBState & state, const StorePath & path);
uint64_t addValidPath(DBState & state, const ValidPathInfo & info, bool checkOutputs = true);
kj::Promise<Result<uint64_t>>
addValidPath(DBState & state, const ValidPathInfo & info, bool checkOutputs = true);
void invalidatePath(DBState & state, const StorePath & path);