From b874320a9da17863dbff3b9f0d1aa45f84ce1101 Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Thu, 23 Jan 2025 12:55:09 -0800 Subject: [PATCH] Fix output. --- crates/remote/src/remote_service.rs | 41 +++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/crates/remote/src/remote_service.rs b/crates/remote/src/remote_service.rs index 89f0bd88b3e..ba972e4b63b 100644 --- a/crates/remote/src/remote_service.rs +++ b/crates/remote/src/remote_service.rs @@ -279,6 +279,47 @@ impl RemoteService { ) .await?; + // The stderr/stdout blobs may not have been inlined, + // so we need to fetch them manually + let mut stdio_digests = vec![]; + + if let Some(stderr_digest) = &result.stderr_digest { + if result.stderr_raw.is_empty() && stderr_digest.size_bytes > 0 { + stdio_digests.push(stderr_digest.to_owned()); + } + } + + if let Some(stdout_digest) = &result.stdout_digest { + if result.stdout_raw.is_empty() && stdout_digest.size_bytes > 0 { + stdio_digests.push(stdout_digest.to_owned()); + } + } + + if !stdio_digests.is_empty() { + for blob in self + .client + .batch_read_blobs(&state.digest, stdio_digests) + .await? + { + if result + .stderr_digest + .as_ref() + .is_some_and(|dig| dig == &blob.digest) + { + result.stderr_raw = blob.bytes; + continue; + } + + if result + .stdout_digest + .as_ref() + .is_some_and(|dig| dig == &blob.digest) + { + result.stdout_raw = blob.bytes; + } + } + } + Ok(()) }