ros2 / ros2/rclcpp

introspection API to verify delivery methods (intra-process and loaned-message) at runtime

Open
#3,153 5 comments 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
C++
Stars
805
Forks
564
Avg merge
1d 17h
Merged PRs (30d)
27

Description

Description

ROS 2 offers two advanced delivery paths

  • intra-process communication (IPC) via IntraProcessManager
  • inter-process loaned messages via the RMW shared-memory path

but neither has any user-facing way to verify that it is actually being used at runtime.
both fall back silently when conditions aren't met, and the only ways to confirm correct setup today require code modification, full LTTng tracing, or both.
this proposal asks for a small introspection API in rclcpp or underlying rcl/rmw implementation that surfaces enough state to answer "is this publisher/subscription pair actually communicating with via LoanedMessage or Intra-Process bypass?" from outside the publishing/subscribing code itself.

Motivation

it is likely for users and developers to make sure the message delivery can be established either intra-process or LoanedMessage as user configures and specifies at runtime. without having this capability, it would be hard for users to evaluate the communication path between the endpoints at runtime.

Design / Implementation Considerations

Expose runtime-introspectable state from the actual communication path.
probably we could add per-endpoint flags reachable from SubscriptionBase, and that information should include the publisher endpoint GID that user can check it at runtime.

Additional Information

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading SubscriptionBase and IntraProcessManager, then trace the rcl/rmw loaned-message path and existing LTTng introspection. Determine what runtime state and publisher endpoint GID can be exposed for each delivery path, and define tests that distinguish intra-process, loaned-message, and fallback communication.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
api, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.