aboutsummaryrefslogtreecommitdiff
path: root/gnu/installer.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-08-10 12:24:44 +0200
committerLudovic Courtès <ludo@gnu.org>2021-08-10 17:32:18 +0200
commitfa81971cbae85b39183ccf8f51e8d96ac88fb4ac (patch)
treeae4f77bc02d3266b411854c2bcd4f1c2e5cc9f4c /gnu/installer.scm
parentb0a6b1f13ce17ec37600f5e8404e0c8c43302fe5 (diff)
downloadguix-fa81971cbae85b39183ccf8f51e8d96ac88fb4ac.tar.gz
guix-fa81971cbae85b39183ccf8f51e8d96ac88fb4ac.zip
store: Add 'map/accumulate-builds' cutoff to address pathological cases.
Fixes <https://bugs.gnu.org/49439>. Reported by Ricardo Wurmus <rekado@elephly.net>. Previously, a command such as: guix environment pigx-scrnaseq could lead to unbounded memory growth and could even fail to complete when some items are missing from the store. This was because 'map/accumulate-builds' callees would keep making .drv build requests that were turned into <unresolved> nodes; in this case, there are often many identical build requests. Stopping accumulation earlier allows us to unlock the situation by proceeding with the first few build requests instead of spinning until we've accumulated all the build requests. * guix/store.scm (map/accumulate-builds): Define 'accumulation-cutoff'. Use a loop when iterating over LST and maintain a counter of unresolved nodes met so far; return when the counter exceeds ACCUMULATION-CUTOFF.
Diffstat (limited to 'gnu/installer.scm')
0 files changed, 0 insertions, 0 deletions