Skip to content

Commit 9361a74

Browse files
Wrap channel send errors with proper context
Signed-off-by: Pragyan Poudyal <[email protected]>
1 parent c754d5e commit 9361a74

File tree

3 files changed

+22
-24
lines changed

3 files changed

+22
-24
lines changed

src/oci/tar.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use std::{
88
path::PathBuf,
99
};
1010

11-
use anyhow::{bail, ensure, Result};
11+
use anyhow::{bail, ensure, Context, Result};
1212
use rustix::fs::makedev;
1313
use tar::{EntryType, Header, PaxExtensions};
1414
use tokio::io::{AsyncRead, AsyncReadExt};
@@ -104,11 +104,13 @@ pub async fn split_async(
104104
}
105105

106106
if let Some(sender) = &writer.object_sender {
107-
sender.send(EnsureObjectMessages::Finish(FinishMessage {
108-
data: std::mem::take(&mut writer.inline_content),
109-
total_msgs: seq_num,
110-
layer_num,
111-
}))?;
107+
sender
108+
.send(EnsureObjectMessages::Finish(FinishMessage {
109+
data: std::mem::take(&mut writer.inline_content),
110+
total_msgs: seq_num,
111+
layer_num,
112+
}))
113+
.with_context(|| format!("Failed to send final message for layer {layer_num}"))?;
112114
}
113115

114116
Ok(())

src/splitstream.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -219,16 +219,16 @@ impl SplitStreamWriter<'_> {
219219
Some(sender) => {
220220
let inline_content = std::mem::replace(&mut self.inline_content, padding);
221221

222-
if let Err(e) =
223-
sender.send(EnsureObjectMessages::Data(SplitStreamWriterSenderData {
222+
sender
223+
.send(EnsureObjectMessages::Data(SplitStreamWriterSenderData {
224224
external_data: data,
225225
inline_content,
226226
seq_num,
227227
layer_num,
228228
}))
229-
{
230-
println!("Falied to send message. Err: {}", e.to_string());
231-
}
229+
.with_context(|| {
230+
format!("Failed to send message to writer for layer {layer_num}")
231+
})?;
232232
}
233233

234234
None => {

src/zstd_encoder.rs

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ impl MultipleZstdWriters {
9898
assert!(layer_num >= layer_num_start && layer_num <= layer_num_end);
9999

100100
match self.writers[layers_to_writers[layer_num]].handle_received_data(data) {
101-
Ok(t) => {
102-
if t {
101+
Ok(finished) => {
102+
if finished {
103103
finished_writers += 1
104104
}
105105
}
@@ -295,18 +295,15 @@ impl ZstdWriter {
295295

296296
let sha = self.finalize_sha256_builder()?;
297297

298-
if let Err(e) = self
299-
.get_state()
298+
self.get_state()
300299
.object_sender
301300
.send(EnsureObjectMessages::Data(SplitStreamWriterSenderData {
302301
external_data: finished,
303302
inline_content: vec![],
304-
seq_num: 0,
303+
seq_num: final_message.total_msgs,
305304
layer_num: final_message.layer_num,
306305
}))
307-
{
308-
println!("Failed to finish writer. Err: {e}");
309-
};
306+
.with_context(|| format!("Failed to send object finalize message"))?;
310307

311308
Ok(sha)
312309
}
@@ -324,13 +321,12 @@ impl ZstdWriter {
324321
let object_path = Repository::format_object_path(&recv_data.digest);
325322
self.repository.ensure_symlink(&stream_path, &object_path)?;
326323

327-
if let Err(e) = self
328-
.get_state()
324+
self.get_state()
329325
.final_result_sender
330326
.send(Ok((final_sha, recv_data.digest)))
331-
{
332-
println!("Failed to send final digest with err: {e:?}");
333-
}
327+
.with_context(|| {
328+
format!("Failed to send result for layer {final_sha:?}")
329+
})?;
334330

335331
return Ok(true);
336332
}

0 commit comments

Comments
 (0)