Skip to content

Fix DDS service call interop with CycloneDDS and FastDDS#400

Open
alvgaona wants to merge 2 commits intoAtostek:masterfrom
alvgaona:fix/sedp-locator-enrichment
Open

Fix DDS service call interop with CycloneDDS and FastDDS#400
alvgaona wants to merge 2 commits intoAtostek:masterfrom
alvgaona:fix/sedp-locator-enrichment

Conversation

@alvgaona
Copy link

Two fixes for ROS 2 DDS service call interop, each targeting a different DDS vendor:

  • CycloneDDS: Fix endpoint locator storage so that SEDP data enriched with participant default locators is persisted in the discovery database
  • FastDDS: Re-export SampleIdentity so downstream crates can set PID_RELATED_SAMPLE_IDENTITY in Inline QoS, which FastDDS requires for service request/reply correlation

…n discovery_db

When a remote DDS implementation (e.g. CycloneDDS) omits per-endpoint
locators in SEDP announcements and relies on the participant's default
locators from SPDP, update_subscription() and update_publication()
would store the raw data with empty locator lists. The enriched copy
(with default locators filled in) was only returned for the immediate
notification but never stored back.

This caused endpoints created after initial SEDP discovery to get
reader/writer proxies with empty locator lists, silently dropping all
data. Service calls (single request/reply) failed 100% of the time.

The fix builds the enriched data first, then stores the enriched
version in external_topic_readers/external_topic_writers so that later
lookups via readers_on_topic()/writers_on_topic() return usable locator
information.
SampleIdentity is required to call WriteOptionsBuilder::related_sample_identity()
but was not publicly accessible. It lived in structure::rpc which is pub(crate),
making the public API method impossible to call from downstream crates. This is
needed for ROS 2 service interop with FastDDS, which uses RTPS Inline QoS
PID_RELATED_SAMPLE_IDENTITY for service request/reply correlation.
@alvgaona alvgaona force-pushed the fix/sedp-locator-enrichment branch from ac29eef to 6c495ae Compare February 13, 2026 21:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant