Spec should clearly describe what to do when max_instances on the Reader side is violated
-
Key: DDS15-333
-
Status: open
-
Source: ZettaScale Technology ( Mr. Erik Hendriks)
-
Summary:
The DDS spec is not clear about what should happen in the following scenario:
A reader is RELIABLE and KEEP_ALL, with max_instances set to n. A matching Writer is found, but this Writer doesn't have a similar instance limit. (Or alternatively, there are multiple Writers that together violate the instance limit of the Reader.)Now in this case, the Reader accepts the first n instances, but when instance n+1 is received it rejects the incoming sample based on exceeding its configured max_instances. But what should happen next? If I permanently drop that sample I violate the Reliability and/or KEEP_ALL policy. If I try to retransmit it, I would very likely run into the same instance limit over and over again, since instances will only be purged when unregistered by the Writer and consumed on the Reader side.
So in the given scenario, should we expect the Writer to keep re-transmitting instance n+1 (subsequently blocking out any other samples following the rejected sample potentially belonging to existing instances due to the order preservation requirements of the Reliability policy?),. or should we expect it to just give up when a sample was rejected by instance limit? In the latter case, would this mean that the Reader would just acknowledge a Rejected sample just to avoid the Writer from retransmitting it? And should the Reader just expect a rejected instance to be lost forever?
And what happens if another instance gets purged, making room for the instance we just rejected before? For VOLATILE, BEST_EFFORT data it might be acceptable that you wait until the next update for this instance arrives, but what if the data is TRANSIENT_LOCAL or above? How does the Reader even ask for retransmission of the rejected sample, given that it might have already acknowledged it before?
I short, I think the spec should make more clear what the consequences are of an instance limit violation on the Reader side.
-
Reported: DDS 1.4 — Wed, 19 Mar 2025 19:20 GMT
-
Updated: Wed, 19 Mar 2025 19:20 GMT