forked from lix-project/lix
Don't ignore an absent drv file in queryPartialDrvOutputMap
This ignore was here because `queryPartialDrvOutputMap` was used both 1. as a cache to avoid having to re-read the derivation (when gc-ing for example), and 2. as the source of truth for ca realisations The use-case 2. required it to be able to work even when the derivation wasn't there anymore (see https://github.com/NixOS/nix/issues/4138). However, this use-case is now handled by `queryRealisation`, meaning that we can safely error out if the derivation isn't there anymore
This commit is contained in:
parent
3765174691
commit
cac8d5b742
|
@ -912,12 +912,7 @@ LocalStore::queryPartialDerivationOutputMap(const StorePath& path_)
|
||||||
auto state(_state.lock());
|
auto state(_state.lock());
|
||||||
std::map<std::string, std::optional<StorePath>> outputs;
|
std::map<std::string, std::optional<StorePath>> outputs;
|
||||||
uint64_t drvId;
|
uint64_t drvId;
|
||||||
try {
|
drvId = queryValidPathId(*state, path);
|
||||||
drvId = queryValidPathId(*state, path);
|
|
||||||
} catch (InvalidPath&) {
|
|
||||||
// Ignore non-existing drvs as they might still have an output map
|
|
||||||
// defined if ca-derivations is enabled
|
|
||||||
}
|
|
||||||
auto use(state->stmts->QueryDerivationOutputs.use()(drvId));
|
auto use(state->stmts->QueryDerivationOutputs.use()(drvId));
|
||||||
while (use.next())
|
while (use.next())
|
||||||
outputs.insert_or_assign(
|
outputs.insert_or_assign(
|
||||||
|
|
Loading…
Reference in a new issue