From 7e1db8c8a1de346d3a6350e1079fd7e6eb30033c Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Fri, 29 Apr 2022 17:08:51 +0300 Subject: [PATCH] Show which virtual file got the deserialization errors --- pageserver/src/layered_repository/delta_layer.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/pageserver/src/layered_repository/delta_layer.rs b/pageserver/src/layered_repository/delta_layer.rs index ef4c3cccb0..4952f64ccd 100644 --- a/pageserver/src/layered_repository/delta_layer.rs +++ b/pageserver/src/layered_repository/delta_layer.rs @@ -258,8 +258,18 @@ impl Layer for DeltaLayer { // Ok, 'offsets' now contains the offsets of all the entries we need to read let mut cursor = file.block_cursor(); for (entry_lsn, pos) in offsets { - let buf = cursor.read_blob(pos)?; - let val = Value::des(&buf)?; + let buf = cursor.read_blob(pos).with_context(|| { + format!( + "Failed to read blob from virtual file {}", + file.file.path.display() + ) + })?; + let val = Value::des(&buf).with_context(|| { + format!( + "Failed to deserialize file blob from virtual file {}", + file.file.path.display() + ) + })?; match val { Value::Image(img) => { reconstruct_state.img = Some((entry_lsn, img));