Routing Service Manual Liveliness

3 posts / 0 new
Last post
Offline
Last seen: 10 years 6 months ago
Joined: 01/03/2014
Posts: 2
Routing Service Manual Liveliness

 

A simplified setup of our system is below:

Subsystem 1 (domain 0) --> Routing Service --> Rest of system (using Manual liveliness QoS settings, domain 1)

My team is trying to see if there is a way to manually assert liveliness *through* the Routing Service. Using the setup above, we want Subsystem 1 to manually assert liveliness on a published topic that the rest of the system subscribes to. It looks like this asserts the Routing Service subscriber, but no assertion is made by the Routing Service to the subscribers on the other domain. Is there any way to manually assert liveliness from the Routing Service, or will liveliness only be achieved with AUTOMATIC settings?

The reason for this setup is that our testers want to be able to verify that each topic is being asserted, which is easier when there is an individual assertion for each topic rather than the single automatic assertion that is made at the participant level.

 

Thanks!

rose's picture
Offline
Last seen: 3 years 4 months ago
Joined: 08/22/2011
Posts: 148

Hello gdrec, 

The Routing Service does not route the liveliness traffic, and I confirmed there is no way to do this without sending user data.

In a way, this makes sense, because it becomes difficult to distinguish between the liveliness of the original DataWriter, and the DataWriter that belongs to the Routing Service, especially since neither of these DataWriters have a fixed unique identifier.  

The typical design pattern in this case is to use a liveliness Topic to express that a DataWriter is alive, and write data to indicate liveliness.

Thank you!

Rose

Gerardo Pardo's picture
Offline
Last seen: 3 weeks 2 days ago
Joined: 06/02/2010
Posts: 602

Hello gdrec,

While Routing Service does indeed not route the liveliness traffic depending on your system I think there may still be a way to detect that each DataWriter is manually asserting liveliness.

The reason is that if a DataWriter fails to assert its LIVELINESS, then the DataReaders that are matching that DataWriter will get a NOT_ALIVE_NO_WRITERS_INSTANCE_STATE notificaton for all the data-instances that were only written by that DataWriter. The NOT_ALIVE_NO_WRITERS_INSTANCE_STATE notifications are propagated by RoutingService, assuming your configuation allows this. The propagation of the not alive no writers event is controlled by the setting of the routing service XML tag <propagate_ unregister> which is set to TRUE by default.

So assumming that each DataWriter is writing keyed data, and there is at least one data-instance that is only written by that one DataWriter, then if the DataWriter fails to assert its liveliness this fact will be reflected in the instance state of the corresponding instance, even it this goes over one or more Routing Services.

Gerardo