Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
80ff0a6
RRD footers: everything framing
teh-cmc Dec 2, 2025
eb24b37
Apply suggestions from code review
teh-cmc Dec 2, 2025
5f9f8a6
Apply suggestions from code review
teh-cmc Dec 2, 2025
2a710f4
review
teh-cmc Dec 2, 2025
7001fdf
Merge branch 'main' into cmc/rrd_footers_1_framing
teh-cmc Dec 2, 2025
293b249
protobuf definitions for RRD manifest
teh-cmc Dec 2, 2025
8901040
native types and transport2app conversions
teh-cmc Dec 2, 2025
45eea06
add logic to build out RRD manifest from chunks
teh-cmc Dec 2, 2025
58af5f7
reusing schema hashing logic in re_server
teh-cmc Dec 2, 2025
78b371b
Update crates/store/re_log_encoding/src/transport_to_app.rs
teh-cmc Dec 2, 2025
622b88b
footer_roundtrip.rs -> footers_and_manifests.rs
teh-cmc Dec 2, 2025
b035f1a
add test for a simple manifest
teh-cmc Dec 2, 2025
4935975
snapshots
teh-cmc Dec 2, 2025
c1e6776
more cargo
teh-cmc Dec 2, 2025
928b761
inject some duration and timestamp timelines into the mix
teh-cmc Dec 2, 2025
ccdfd35
Apply suggestions from code review
teh-cmc Dec 2, 2025
ad754fa
codegen
teh-cmc Dec 2, 2025
40874db
encoding RRD manifests into footers
teh-cmc Dec 2, 2025
8d3eb2e
decoding RRD manifests and pulling them out of the state machine
teh-cmc Dec 2, 2025
a090291
add footer roundtrip test suite
teh-cmc Dec 2, 2025
1cd77a0
snapshots
teh-cmc Dec 2, 2025
99a9e68
expose RRD manifests all through the CLI
teh-cmc Dec 2, 2025
92b97b9
option to recompute manifests in `rrd route`
teh-cmc Dec 2, 2025
833396c
document the checksum algorithm used
teh-cmc Dec 3, 2025
f11d7c3
use more Spans
teh-cmc Dec 3, 2025
eae5d66
Merge branch 'cmc/rrd_footers_1_framing' into cmc/rrd_footers_2_rrd_m…
teh-cmc Dec 3, 2025
1079fc9
Merge branch 'cmc/rrd_footers_2_rrd_manifests' into cmc/rrd_footers_3…
teh-cmc Dec 3, 2025
fc8dac8
review
teh-cmc Dec 3, 2025
9f02172
fix sanity check not accounting for lack of normalization in sorbet land
teh-cmc Dec 3, 2025
6068842
introduce whitespaces in footer test suites for some extra chaos
teh-cmc Dec 3, 2025
180e33e
snapshots
teh-cmc Dec 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -9071,19 +9071,25 @@ dependencies = [
"bytes",
"criterion",
"ehttp",
"insta",
"itertools 0.14.0",
"js-sys",
"lz4_flex 0.12.0",
"mimalloc",
"parking_lot",
"re_arrow_util",
"re_build_info",
"re_chunk",
"re_log",
"re_log_types",
"re_protos",
"re_smart_channel",
"re_sorbet",
"re_span",
"re_tracing",
"re_types",
"re_types_core",
"sha2",
"similar-asserts",
"thiserror 2.0.17",
"tokio",
Expand All @@ -9093,6 +9099,7 @@ dependencies = [
"wasm-bindgen-futures",
"web-sys",
"web-time",
"xxhash-rust",
]

[[package]]
Expand Down Expand Up @@ -9617,7 +9624,6 @@ dependencies = [
"re_tuid",
"re_types_core",
"serde",
"sha2",
"tempfile",
"thiserror 2.0.17",
"tokio",
Expand Down
1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,7 @@ wgpu = { version = "27.0.1", default-features = false, features = [
"fragile-send-sync-non-atomic-wasm",
] }
xshell = "0.2.7"
xxhash-rust = { version = "0.8", features = ["xxh32"] }

# ---------------------------------------------------------------------------------
[profile]
Expand Down
7 changes: 7 additions & 0 deletions crates/store/re_log_encoding/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -42,21 +42,27 @@ stream_from_http = [
[dependencies]

# Rerun:
re_arrow_util.workspace = true
re_build_info.workspace = true
re_chunk.workspace = true
re_log_types.workspace = true
re_log.workspace = true
re_protos.workspace = true
re_smart_channel.workspace = true
re_sorbet.workspace = true
re_span.workspace = true
re_tracing.workspace = true
re_types_core.workspace = true

# External:
arrow = { workspace = true, features = ["ipc"] }
itertools.workspace = true
lz4_flex = { workspace = true }
parking_lot.workspace = true
sha2.workspace = true
thiserror.workspace = true
tracing.workspace = true
xxhash-rust.workspace = true

# Optional external dependencies:
bytes = { workspace = true, optional = true }
Expand All @@ -76,6 +82,7 @@ web-sys = { workspace = true, optional = true, features = ["Window", "MessageEve
re_types.workspace = true

criterion.workspace = true
insta.workspace = true
mimalloc.workspace = true
similar-asserts.workspace = true

Expand Down
15 changes: 14 additions & 1 deletion crates/store/re_log_encoding/src/rrd/decoder/iterator.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use crate::RrdManifest;
use crate::rrd::decoder::state_machine::DecoderState;
use crate::rrd::{DecodeError, Decoder, DecoderEntrypoint};

Expand Down Expand Up @@ -109,6 +110,18 @@ impl<T, R: std::io::BufRead> DecoderIterator<T, R> {
}
}

impl<T: DecoderEntrypoint, R: std::io::BufRead> DecoderIterator<T, R> {
/// Returns all the RRD manifests accumulated _so far_.
///
/// RRD manifests are parsed from footers, of which there might be more than one e.g. in the
/// case of concatenated streams.
///
/// This is not cheap: it automatically performs the transport to app level conversion.
pub fn rrd_manifests(&self) -> Result<Vec<RrdManifest>, DecodeError> {
self.decoder.rrd_manifests()
}
}

impl<T: DecoderEntrypoint, R: std::io::BufRead> std::iter::Iterator for DecoderIterator<T, R> {
type Item = Result<T, DecodeError>;

Expand Down Expand Up @@ -139,7 +152,7 @@ impl<T: DecoderEntrypoint, R: std::io::BufRead> std::iter::Iterator for DecoderI

// …and the underlying decoder already considers that it's done (i.e. it's
// waiting for a whole new stream to begin): time to stop.
Ok(None) if self.decoder.state == DecoderState::StreamHeader => {
Ok(None) if self.decoder.state == DecoderState::WaitingForStreamHeader => {
return None;
}

Expand Down
Loading
Loading