What does this Exclusive Area error message mean?
Note: Applies to RTI Connext 4.x and above.
RTI Connext uses the concept of exclusive areas (EA) to avoid deadlocks when user listener code calls the RTI Connext APIs.
In a nutshell:
- Each entity has their own EAs.
- Controlling access into EAs is a way to prevent deadlocking situations.
- The rule of thumb is: do not access lower EAs.
There are three ordered levels of Exclusive Areas:
- ParticipantEA: There is one per Participant.
- SubscriberEA: There is one per Subscriber. DataReaders created by a Subscriber share the EA of its parent.
- PublisherEA: There is one per Publisher. DataWriters created by a Publisher share the EA of its parent.
The three EA levels are ordered in the following manner:
ParticipantEA < SubscriberEA < PublisherEA
If a thread is in an EA, it can call methods associated with either a higher EA level or methods that share the same EA. It cannot call methods associated with a lower EA level, nor can it call methods that use a different EA at the same level.
The following error message indicates that the application is trying to access a lower exclusive area (EA) from a higher EA:
DDS_Entity_check_callback_infoI:illegal operation due to exclusive area
For example, the message may indicate that an application is trying to access a Subscriber from a Publisher's listener callback, or that a DataWriter's callback is trying to access a DataReader.
See the Core Libraries and Utilities User's Manual ("Entities" chapter) for more details on exclusive areas.