OpenDDS / OpenDDS

OpenDDS is an open source C++ implementation of the Object Management Group (OMG) Data Distribution Service (DDS). OpenDDS also supports Java bindings through JNI.
http://www.opendds.org
Other
1.28k stars 463 forks source link

rtps_udp sends heartbeats when sending fragments #4603

Closed jrw972 closed 2 weeks ago

jrw972 commented 3 weeks ago

Problem

Suppose a writer has an agressive heartbeat period and then writes a sample that is highly fragmented. It is possible (probable) that the heartbeat timer will go off before all fragments have been sent. The reader can then nack fragments that haven't even been sent. The writer would then resend the requested fragments.

Solution

Before sending a heartbeat, check that the user is not in the middle of a send.

The solution does not make a change for resends due to reliability and/or durability. The reason for this is that sending heartbeats and nack responses are mutually exclusive based on locking.

jrw972 commented 3 weeks ago

@jwillemsen It appears https://github.com/DOCGroup/ACE_TAO/pull/2224 broke our CMake builds.

jwillemsen commented 3 weeks ago

Created https://github.com/OpenDDS/OpenDDS/pull/4605 to raise C++ standard to C++17 with ACE 7