Skip to content

Commit

Permalink
unpack_ram: More graceful handling of low unpack ram
Browse files Browse the repository at this point in the history
Some people try setting RUSTUP_UNPACK_RAM below the minimum
RAM needed for a threaded operation.  Since, in principle,
we need at least IO_CHUNK_SIZE and thus in theory 2x IO_CHUNK_SIZE,
this change softens the failure mode from a panic to a warning
and then tries anyway.  This is *likely* to succeed and as such
we'll let it happen.  The warning should make it clear if there's
a problem, and should not appear for no-sysinfo platforms since
they default to minimum_ram anyway.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
  • Loading branch information
kinnison committed May 28, 2021
1 parent 494b307 commit 4993836
Showing 1 changed file with 21 additions and 6 deletions.
27 changes: 21 additions & 6 deletions src/dist/component/package.rs
Original file line number Diff line number Diff line change
Expand Up @@ -182,9 +182,23 @@ fn unpack_ram(
.ok()
.and_then(|budget_str| budget_str.parse::<usize>().ok())
{
// Note: In future we may want to add a warning or even an override if a user
// supplied budget is larger than effective_max_ram.
Some(budget) => budget,
Some(budget) => {
if budget < minimum_ram {
warn!(
"Specified unpack RAM limit ({}) less than minimum of {}. Unpacking may fail.",
budget, minimum_ram
);
}
if budget > default_max_unpack_ram {
warn!(
"Specified unpack RAM limit ({}) greater than detected available RAM of {}. Clamping to detected limit.",
budget, default_max_unpack_ram
);
default_max_unpack_ram
} else {
budget
}
}
None => {
if let Some(h) = notify_handler {
h(Notification::SetDefaultBufferSize(default_max_unpack_ram))
Expand All @@ -193,10 +207,11 @@ fn unpack_ram(
}
};

if io_chunk_size > unpack_ram {
panic!("RUSTUP_UNPACK_RAM must be larger than {}", io_chunk_size);
if minimum_ram > unpack_ram {
minimum_ram
} else {
unpack_ram
}
unpack_ram
}

/// Handle the async result of io operations
Expand Down

0 comments on commit 4993836

Please sign in to comment.