Skip to content

Fix rrd not containing end marker #9032

@jprochazk

Description

@jprochazk

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:

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 MessageHeaders, 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    🪳 bugSomething isn't working

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions