rmw_fastrtps icon indicating copy to clipboard operation
rmw_fastrtps copied to clipboard

get_publishers_info_by_topic does not return qos depth for publishers with fastDDS

Open eschembor-irobot opened this issue 2 years ago • 1 comments
trafficstars

Bug report

Required Info:

  • Operating System:
    • Ubuntu 20.04
  • Installation type:
    • From source
  • Version or commit hash:
    • 5EBF27D810C6AB68EEF7D42937CD421D85E50509AE96883239979A1B3A2F4F82
  • DDS implementation:
    • fastDDS
  • Client library (if applicable):
    • rclcpp

Steps to reproduce issue

Noticed this when using foxglove_bridge. They compute the qos depth to use for a subscriber by summing the qos depths of all publishers on that topic. This is not working with fastDDS as get_publishers_info_by_topic reports a qos depth of 0 for any publisher.

Tracing this through the code, I see the comment here which I think indicates the source of the issue https://github.com/ros2/rmw_fastrtps/blob/901339f274fc07fad757fb32bd16f00815217302/rmw_fastrtps_shared_cpp/include/rmw_fastrtps_shared_cpp/qos.hpp#L129

Expected behavior

I would expect get_publishers_info_by_topic to report the actual qos depth of publishers

Actual behavior

get_publishers_info_by_topic reports all publishers as having a qos depth of 0

Additional information

eschembor-irobot avatar Apr 04 '23 16:04 eschembor-irobot

technically, with rmw_fastrtps history depth is unknown, we can see this using ros2 topic info -v. rmw_fastrtps does not store the history depth from discovery information, that leads to unknown (zero). (rmw_cyclonedds can get the actual history depth, but rmw_connextdds, which tries to store the data but it is unknown.)

see details https://github.com/ros2/rclpy/pull/849

to address this issue, we need Fast-DDS to get the history depth information via discovery process to store the graph.

fujitatomoya avatar Apr 07 '23 02:04 fujitatomoya