-
Notifications
You must be signed in to change notification settings - Fork 536
Description
For some reason, the rrd
file produced in test_load_recording
(in test_dataframe.py
) does not contain an end stream marker.
The file the test produced on my machine:
tmp.rrd.zip
pixi run rerun tmp.rrd
works and contains all expected data.
I ran into this issue in
It took me a few hours to realise this was the cause of this CI failure, so I have not investigated the real reason behind it, and only applied a workaround.
The workaround was to ignore read failures at the start of a new message (ea90dd8). We've had this exact snippet in there since way before protobuf was in the picture:
rerun/crates/re_log_encoding/src/decoder.rs
Lines 122 to 130 in 2514b72
let header = match MessageHeader::decode(&mut self.read) { | |
Ok(header) => header, | |
Err(err) => match err { | |
DecodeError::Read(e) if e.kind() == std::io::ErrorKind::UnexpectedEof => { | |
return None | |
} | |
other => return Some(Err(other)), | |
}, | |
}; |
Note that in the past, it was only ignoring incomplete MessageHeader
s, but now it ignores incomplete messages in full. This seems wrong, we should not have to do that. It may hide real errors caused by incomplete streams.