diff --git a/crates/runner-shared/src/artifacts/memtrack/mod.rs b/crates/runner-shared/src/artifacts/memtrack/mod.rs index 962095077..f799ada9e 100644 --- a/crates/runner-shared/src/artifacts/memtrack/mod.rs +++ b/crates/runner-shared/src/artifacts/memtrack/mod.rs @@ -26,13 +26,19 @@ impl super::ArtifactExt for MemtrackArtifact { impl MemtrackArtifact { /// The msgpack decoder reads a few bytes per call, so the decompressed /// stream is buffered rather than read straight from the zstd decoder. + /// The buffer is sized well above a stack record's 8 KiB byte field. #[allow(clippy::type_complexity)] pub fn decode_streamed( reader: R, ) -> anyhow::Result>>>> { + const BUFFER_SIZE: usize = 1024 * 1024; + let decoder = zstd::Decoder::new(reader)?; Ok(MemtrackEventStream { - deserializer: rmp_serde::Deserializer::new(BufReader::new(decoder)), + deserializer: rmp_serde::Deserializer::new(BufReader::with_capacity( + BUFFER_SIZE, + decoder, + )), }) }