When an entity is ignored, Connext DDS adds it to an internal ‘ignore’ table whose resource limits are configured using the ignored_entity_allocation.max_count in the DOMAIN_PARTICIPANT_RESOURCE_LIMITS QosPolicy (DDS Extension) (Section 8.5.4). The behavior of Connext DDS when this limit is exceeded can be modified by using the ignored_entity_replacement_kind in the same QoS policy.
The default value for ignored_entity_replacement_kind is DDS_NO_REPLACEMENT_IGNORED_ENTITY_REPLACEMENT, meaning that a call to the DomainParticipant’s ignore_participant(), ignore_publication(), or ignore_subscription() will fail if the DomainParticipant has ignored more entities than the limit set in ignored_entity_allocation.max_count entities.
When ignored_entity_replacement_kind is set to DDS_NOT_ALIVE_FIRST_IGNORED_ENTITY_REPLACEMENT, a call to ignore_participant() will not fail when ignored_entity_allocation.max_count is exceeded, as long as there is one DomainParticipant already ignored. Instead, the call will replace one of the existing DomainParticipants in the internal table. The remote DomainParticipant that will be replaced is the one for which the local DomainParticipant had not received any message for the longest time.
When a remote DomainParticipant is replaced in the ‘ignore’ table, it becomes un-ignored. Thus, the local DomainParticipant would have to call ignore_participant() again to re-ignore the replaced entity.
Note: In this release, ignored publications and subscriptions are never replaced in the ‘ignore’ table. Since this table also contains the ignored DomainParticipants, a call to ignore_participant() will fail if ignored_entity_allocation.max_count is reached and none of the ignored entities is a DomainParticipant.
© 2020 RTI