Stabilize node-direct Zenoh data path: coordinator wiring, session sharing, and race-free input pairing#1376
Stabilize node-direct Zenoh data path: coordinator wiring, session sharing, and race-free input pairing#1376Copilot wants to merge 5 commits into
Conversation
Co-authored-by: phil-opp <1131315+phil-opp@users.noreply.github.com>
Co-authored-by: phil-opp <1131315+phil-opp@users.noreply.github.com>
Co-authored-by: phil-opp <1131315+phil-opp@users.noreply.github.com>
Co-authored-by: phil-opp <1131315+phil-opp@users.noreply.github.com>
|
This PR was generated using GPT-5.3-Codex. Closing in favor of #1378, which was generated through claude Opus 4.6. Key reasons for the decision:
|
This update completes the remaining reliability gaps in the Zenoh node-direct path: daemon-spawned nodes were not receiving coordinator discovery info, input delivery relied on a timeout-based race, and session/payload handling still had avoidable inefficiencies and dead protocol surface.
Coordinator propagation for daemon-spawned nodes
Spawnernow carries coordinator IP and injects it intoNodeConfig.coordinator_addrinstead of alwaysNone.Daemonstores coordinator address and passes it intoSpawnerat node launch.Race-free Zenoh input integration
inject_zenoh_payload()correlation.EventItem::ZenohPayload { id, payload }directly into the same event channel as daemon events.EventStreampairs:NodeEvent::Input { data: None }metadata events, andusing per-input queues (
pending_daemon_inputs,pending_zenoh_payloads) with no blocking waits.Single session ownership model
DoraNodeopens one Zenoh session and passes a clone intoEventStream.EventStreamno longer opens a second independent session.Payload handling cleanup
to_bytes().into_owned() + AVec::from_slice(...)with single-copy conversion from payload bytes intoAVec.ZENOH_PAYLOAD_ALIGNMENT).Protocol/dead-code cleanup
DaemonReply::PreparedMessage.node_to_daemon::InputData.data_to_arrow_array(...)and updated call sites.Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
224.0.0.224REDACTED, pid is -1(packet block)If you need me to access, download, or install something from one of these locations, you can either:
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.