Epic: Compression & batched-render correctness (LZ4 ceiling, payload header, render_list parity) #5
Labels
No labels
area:ci
area:compression
area:demux
area:metadata
area:packaging
area:session
area:sink
area:src
breaking-change
bug
documentation
duplicate
enhancement
epic
good first issue
help wanted
invalid
P0
P1
P2
question
wontfix
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
marcpardo/gst-plugin-zenoh#5
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Compression and the batched-render path have correctness bugs that silently corrupt or drop data.
Why now (0.5.0)
These cause hard failures on large frames and silent data loss for batched buffers — unacceptable for a media transport.
Tasks
decompress()hardcodesMAX_DECOMPRESSED_SIZE = 16 * 1024 * 1024(compression.rs:178) because LZ4 raw blocks don't carry the decompressed size — any frame decompressing to >16 MB fails. Prepend au32/varint length header to LZ4 payloads (zstd/gzip are self-describing and fine).gst.compressionthrough theuser.*attachment namespace.render_list()parity. It currently sendsb.as_slice()directly (zenohsink/imp.rs:1337), bypassing compression andsend-buffer-meta— batched buffers silently lose timing metadata and aren't compressed. Route list items through the same encode path asrender(), or refuserender_listwhen those features are enabled.droppedstat.Statistics.droppedis exposed as a property but never incremented. Wire it up (e.g. drop-mode congestion / ring-buffer eviction — see Epic 7) or remove it.Acceptance criteria
droppedreflects reality or is removed.References
src/compression.rs:178(LZ4 ceiling), level handling.src/zenohsink/imp.rs:1337(render_listraw send).Risks / breaking changes
Adding a header to compressed payloads breaks 0.4.x compression wire compatibility — intentional and versioned (
breaking-change).