Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Feature: Implementation of manual assertion and events for Liveliness QoS policy #503

Closed
8 tasks
nburek opened this issue Apr 24, 2019 · 8 comments
Closed
8 tasks

Comments

@nburek
Copy link

nburek commented Apr 24, 2019

There is an ongoing project to support the Liveliness QoS feature in the Dashing release of ROS 2. Support for this in rmw_fastrtps is blocked on the Liveliness feature being fully supported in Fast-RTPS. This includes both the ability to assert manual liveliness and also the ability to be notified of changes to liveliness.

Below is the list of everything that we think still needs to be implemented in order to support Liveliness. If there is ongoing work towards any of these please let us know. Otherwise we can start to send over Pull Requests towards implementing this feature.

Writer

  • Set the aliveness flag on a Writer when the manual assertion is called or when messages are published
  • Add a timed event that sends out the heartbeat for a Writer using MANUAL_BY_TOPIC level of liveliness and clears the aliveness flag on the Writer
  • Set the aliveness flag on a Participant when the manual assertion is called or when there is activity on any of the Writers on the Participant
  • Create a timed event that handles when the liveliness expires on a Writer and generates the on_liveliness_changed event
  • Keep a counter for heartbeat messages sent on a Participant using MANUAL_BY_PARTICIPANT and have it send out the corresponding message for Simple Participant Discovery Protocol (SPDP) that reflects the updated count when it changes

Reader

  • Implement StatelessReader::processHeartbeatMsg()
  • Expand StatefulReader::processHeartbeatMsg() to track information on WriterProxies
  • Create a timed event for notifying when liveliness expires on a Writer or Participant
@raquelalvarezbanos
Copy link
Contributor

Hi @nburek, thanks for opening this issue.

We have indeed started working on this QoS. We finished a design this week that involves a bit more work than what you mention (as an example, one thing we have to consider is that liveliness should also be supported for stateless readers, which is not currently the case in Fast-RTPS). The plan is to release this QoS in 1.8.1. I can keep you updated on the progress if you like.

@adam-dunc
Copy link

Hi @raquelalvarezbanos, thank you for the quick reply. We have two developers working on this and would be more than happy to collaborate with you on development: designs, testing as well as contribute code. We can continue to submit updates here if thats easiest or jump on a call.

What are your current timelines for v.1.8.1?

@raquelalvarezbanos
Copy link
Contributor

Hi both,
Sorry for the delay in responding. The rest of this week is bank holiday here, but we can arrange a call next week to discuss timelines and see if we can collaborate on this. I will check with @JaimeMartin when the best time would be for us (we are away Monday and Tuesday), and we can suggest a date and a time, if that works for you.

@rutvih
Copy link

rutvih commented May 6, 2019

@raquelalvarezbanos Let us know when would be a good time to chat more about this. Happy to setup a call if you could suggest time that works best for you!

@raquelalvarezbanos
Copy link
Contributor

Hi @rutvih, for us it would be better to have the call after we release version 1.8.0, as we are going to be quite busy until then. A good day for us would be the 16th of May (May 15th is a bank holiday here). Regarding the time, 5pm (CEST) would be good for us. Would that work for you? If so, feel free to setup the meeting, or propose an alternative date/time.

@emersonknapp
Copy link

Bumping this issue - it looks like release/1.8.1 branch adds Publisher::assert_liveliness, but not Participant::assert_liveliness yet

@raquelalvarezbanos
Copy link
Contributor

Hi All, since liveliness was implemented as part of release 1.8.1, please let us know if this issue can be now closed. Thanks!

@emersonknapp
Copy link

Yes, we are sucessfully using these features in ROS2 now - this can be closed :)

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

No branches or pull requests

5 participants