4.4. Reliability Protocol and Wire Representation

4.4.1. [Critical] Sample may not have been delivered to a DataReader in a Required Subscription

A DataWriter configured with Required Subscriptions might not have delivered some samples to any DataReader that was part of those subscriptions. These samples were incorrectly lost.

This issue occurred when some samples had to be gapped (through GAP messages) to the DataReaders in the Required Subscription—for example, when a DataReader used a ContentFilteredTopic. It could also occur when DataReaders belonging to a Durable Subscription were restarted.

[RTI Issue ID CORE-16166]

4.4.2. [Critical] Samples lost if new DataReader created on same topic and DomainParticipant as existing DataReaders using async publishing

It was possible for existing DataReaders to incorrectly lose a few samples if a new DataReader was created in the same DomainParticipant and on the same topic as them.

This happened when the DataWriter writing the samples was using asynchronous publishing and the new DataReader was discovered after a sample was written by the DataWriter but before it was sent by the asynchronous publishing thread. If that happened, the samples pending to be sent by the asynchronous publishing thread were incorrectly announced as irrelevant to the existing DataReaders through a GAP submessage and those DataReaders never received the actual samples.

[RTI Issue ID CORE-16251]

4.4.3. [Critical] Sample may not have been delivered to a DataReader using application-level acknowledgments

A DataWriter might not have delivered some samples to any DataReader that was setting reliability.acknowledgment_kind to a value other than PROTOCOL_ACKNOWLEDGMENT_MODE. These samples were incorrectly lost.

This issue occurred when some samples had to be gapped (through GAP messages) to the DataReader—for example, when a DataReader used a ContentFilteredTopic. It could also occur when the DataReader was restarted.

[RTI Issue ID CORE-16421]

4.4.4. [Major] Unexpected precondition error sending repair to DataReaders with 16 locators

A DataWriter sending a repair to a DataReader with exactly 16 locators encountered a precondition error, such as the following:

SrWriterService.c:5315:RTI0x3000035:!precondition: "destEncapsulationCount >= ((2*(8)))"

This issue only occurred when using debug libraries.

[RTI Issue ID CORE-16471]