1

I have an RTI DDS application with a reliable reader and reliable writer.

Whenever I restart the reader application, the reader reads messages it already received. So in the case the reader received a message to restart the application it is now in a restart loop due to the restart message being read every application restart.

I was under the impression that these messages would be acknowledged and not resent if already received before application restart. Why am I receiving messages I thus have already read on application restart of the reader? Also is there a way to see if the messages are being acknowledged as sent and received?

jgr208
  • 2,896
  • 9
  • 36
  • 64

1 Answers1

1

Since your QoS settings have a TRANSIENT_LOCAL policy for Durability, you are observing expected behavior. According to this documentation, the effect of using TRANSIENT_LOCAL is that "RTI Connext will attempt to keep some samples so that they can be delivered to any potential late-joining DDSDataReader." -- as required by the OMG DDS specification. That is exactly what you see happening.

If you do not want that kind of behavior, select the VOLATILE policy for Durability on your Writer and Reader.

Reinier Torenbeek
  • 16,669
  • 7
  • 46
  • 69
  • will this then keep reliability for any missed messages or no? – jgr208 Feb 22 '17 at 20:37
  • Yes, it will. You should keep the setting of RELIABLE policy for the [reliability QoS](https://community.rti.com/static/documentation/connext-dds/5.2.3/doc/api/connext_dds/api_cpp/group__DDSReliabilityQosModule.html). – Reinier Torenbeek Feb 23 '17 at 10:18
  • thanks! sounds like this is the way to go in that case. – jgr208 Feb 23 '17 at 14:28