5.8. TopicQueries

5.8.1. [Critical] Communication could stop when using bounded max_samples and TopicQueries

Communication may have stopped when using TopicQueries and setting the DataReader’s max_samples QoS setting to less than 256 x (the number of DataWriters responding to the TopicQueries).

This situation could only happen if all of the following were also true:

  • The DataReader was configured with KEEP_LAST history kind.

  • The DataReader created multiple TopicQueries, and the responses to those TopicQueries contained some of the same samples.

  • There were dropped samples.

If all of those conditions were met and, before the losses were repaired, the DataReader’s queue filled up to the max_samples resource limit, then the DataReader would never accept any more samples into its queue.

[RTI Issue ID CORE-13784]

5.8.2. [Major] max_samples resource limit not honored in some cases when using an unkeyed topic and TopicQueries

If a DataReader created multiple TopicQueries and had a finite max_samples resource limit, that limit was not correctly enforced in TopicQuery queues. After some time, the DataReader may have accepted more samples than max_samples or failed to allocate more samples, leading to errors and lost samples. This only happened if the topic was unkeyed. Now, when a DataReader issues multiple TopicQueries, the max_samples resource limit is properly enforced for each of the TopicQuery queues correctly.

[RTI Issue ID CORE-14363]