1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-08 19:46:02 +01:00

fixup: cached case

I couldn't come up with a test that failed before this, but my existing
test still passes so 🤷
This commit is contained in:
Cole Helbling 2025-09-07 17:06:29 +02:00
parent bccdb95a86
commit 9c832a08b0
2 changed files with 5 additions and 5 deletions

View file

@ -20,6 +20,7 @@ struct InputCache
{
Input lockedInput;
ref<SourceAccessor> accessor;
Attrs extraAttrs;
};
virtual std::optional<CachedInput> lookup(const Input & originalInput) const = 0;

View file

@ -8,7 +8,6 @@ namespace nix::fetchers {
InputCache::CachedResult
InputCache::getAccessor(ref<Store> store, const Input & originalInput, UseRegistries useRegistries)
{
Attrs extraAttrs;
auto fetched = lookup(originalInput);
Input resolvedInput = originalInput;
@ -18,13 +17,13 @@ InputCache::getAccessor(ref<Store> store, const Input & originalInput, UseRegist
fetched.emplace(CachedInput{.lockedInput = lockedInput, .accessor = accessor});
} else {
if (useRegistries != UseRegistries::No) {
auto [res, extraAttrs_] = lookupInRegistries(store, originalInput, useRegistries);
extraAttrs = extraAttrs_;
auto [res, extraAttrs] = lookupInRegistries(store, originalInput, useRegistries);
resolvedInput = std::move(res);
fetched = lookup(resolvedInput);
if (!fetched) {
auto [accessor, lockedInput] = resolvedInput.getAccessor(store);
fetched.emplace(CachedInput{.lockedInput = lockedInput, .accessor = accessor});
fetched.emplace(
CachedInput{.lockedInput = lockedInput, .accessor = accessor, .extraAttrs = extraAttrs});
}
upsert(resolvedInput, *fetched);
} else {
@ -38,7 +37,7 @@ InputCache::getAccessor(ref<Store> store, const Input & originalInput, UseRegist
debug("got tree '%s' from '%s'", fetched->accessor, fetched->lockedInput.to_string());
return {fetched->accessor, resolvedInput, fetched->lockedInput, extraAttrs};
return {fetched->accessor, resolvedInput, fetched->lockedInput, fetched->extraAttrs};
}
struct InputCacheImpl : InputCache