ros2 / ros2/rclcpp

Implement missing QoS when using intraprocess communication

Open
#752 8 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Feature request

Feature description

Implement KEEP_ALL history policy with intraprocess communication (see https://github.com/ros2/rclcpp/issues/727).
Implement non-volatile durability with intraprocess communication.

Implementation considerations

For sizing the buffers when KEEP_ALL history policy is used, resource limits qos policy will be needed (https://github.com/ros2/rmw/issues/176).

For implementing TRANSIENT_LOCAL durability:

  • With history keep_last, the intra_process_manager could store the last message send of each publisher. Adding a map, with publisher_id as keys and storing a shared_ptr to the message sounds reasonable.
  • With history KEEP_ALL, the intra_process_manager should never pop from the internal buffer.
  • When a new subscription is created with TRANSIENT_LOCAL durability, all the messages from publishers in the same topic with TRANSIENT_LOCAL durability should be delivered (depending on subscriber and publisher history policy if the last of all the messages are delivered). When the publisher history policy was keep_last, if the message is not found in the buffer (because it was popped), it should be taken from the last_message map (mentioned above).

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 inspecting the intra_process_manager and reading the linked issues ros2/rclcpp#727 and ros2/rmw#176. Trace how intraprocess history and durability are currently handled. Done means KEEP_ALL and non-volatile durability work for intraprocess communication, including the stated buffer, resource-limit, publisher, and new-subscription behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.