Repository navigation
docs(zenoh): document the zenoh#2836 exposure and fix two nits - #317
Merged
Merged
Conversation
- zenoh's Session runs `intersects` on every delivered sample against each
subscriber's key, so an inbound zenoh:// link whose filter has a `**`
before more chunks (`site/{path..}/state`) can be aborted by one sample
with a long matching key. Measured on zenoh 1.10.1 through a router: the
subscribing client aborted, the router survived. Correct the upstream
note, which said the connector was not affected, and add the exposure to
design 053 §4.3 and to the connector README's limits.
- Makefile: move ros2-interop under its own header, so readme-check keeps
its comment.
- Usage guide: register both Zenoh connectors in the example.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_019466ean3DmpcQPdR1DApoT
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
A docs-only follow-up to the verification of #316. It changes no code.
The zenoh#2836 exposure.
docs/upstream/zenoh-2836-…mdsays the connector is not affected, becauseZenohGrammarnever callsintersects. But zenoh'sSessiondoes: it matches every delivered sample against each subscriber's key expression withintersects(subscriber_callbacksinzenoh/src/api/session.rs, 1.10.1). So an inboundzenoh://link whose filter has a**with more chunks after it is exposed.zenoh://site/{path..}/stateis one example: it subscribes tosite/**/state. One sample with a long matching key aborts the process.Reproduced on zenoh 1.10.1, release build, with three processes:
a/**/bthrough a router, and another client did oneputon a matching key: 32,000 chunks, 64,001 bytes, inside the wire format's limit.thread 'rx-0' has overflowed its stackandfatal runtime error: stack overflow, aborting. The router survived.**/banda/*/**/baborted the same way.a/**received the same long key without problems, becauseintersectsreturns at once when the**is last.Changes:
docs/upstream/zenoh-2836-keyexpr-intersects-stack-overflow.md: replaces "so the connector is not affected" with the session path and the measurements. It also sketches a possible guard: declare such a filter only up to its first**, then match the full filter in the callback.docs/design/053-zenoh-connector.md§4.3: a new sub-bullet on the inbound side.aimdb-zenoh-connector/README.md, Limits section: a new bullet.Nits:
Makefile:ros2-interopmoves under its own## Interopheader. It had landed betweenreadme-checkand that target's comment.docs/aimdb-usage-guide.md: the Zenoh example now registers both connectors (AimDbBuilder::new().runtime(runtime).with_connector(zenoh).with_connector(ros2)). Before, it created them but never passed them to a builder.Reproduction (zenoh 1.10.1, features
transport_tcp)router, thensub 'a/**/b', thenpub 32000 /b. The subscriber aborts and the router keeps running.Related Issue
Checklist
make check): not run, since this is docs plus a moved Makefile block.make readme-checkpasses andmake -n ros2-interopparses. CI'spull_requesttrigger doesn't cover PRs into this branch.🤖 Generated with Claude Code
https://claude.ai/code/session_019466ean3DmpcQPdR1DApoT
Generated by Claude Code