5.4. Transports

5.4.1. [Critical] Shared Memory communications might not have been recovered if a DataReader crashed or was ungracefully killed

If a DataWriter communicated with a DataReader using the Shared Memory Transport plugin, and the DataReader crashed or was ungracefully terminated, the DataWriter might have failed to communicate with a new DataReader spawned on the same machine.

Additionally, if multiple DataReaders were present on the same machine and one of them crashed or was ungracefully terminated, communication between the DataWriter and the remaining DataReaders might have been disrupted.

This issue has been resolved. Note that for this problem to occur, the crash or termination had to happen at a very specific moment, making it difficult to reproduce.

[RTI Issue ID CORE-15247]

5.4.2. [Major] TCP Transport did not properly enforce system FD_SETSIZE hard limits for select() socket monitoring

The TCP Transport did not properly enforce system FD_SETSIZE hard system limits for SELECT socket monitoring. This may have resulted in undefined behavior when using SELECT socket monitoring in systems where overwriting the FD_SETSIZE to a custom value at compilation time was not supported.

As a side-effect of this fix, the maximum FD_SETSIZE in Linux systems has been reduced to 1024, which effectively limits both the maximum number of sockets (to 1024) and the maximum socket ID (to 1023) that are supported by SELECT socket monitoring. To avoid scalability issues in the Transport TCP in Linux systems, you are encouraged to switch to POLL socket monitoring, which is the new default (see “What’s New in 7.3.1”).

[RTI Issue ID COREPLG-756]

5.4.3. [Minor] Possible failure to create DomainParticipant if using multicast

If you were using multicast to receive either discovery or user traffic, it was possible for the ephemeral port used for sending unicast traffic to coincide with an intended multicast receive port, leading to DomainParticipant creation failure with this error:

DDS_DomainParticipant_enableI:Automatic participant index failed to initialize. PLEASE VERIFY CONSISTENT TRANSPORT / DISCOVERY CONFIGURATION.

This problem has been solved by removing the possibility of a port collision, thereby removing that as a possible reason for DomainParticipant creation failure.

Note that a port collision is still possible when specifying a non-default value in the multicast or unicast fields within the DataReaderQos or DataWriterQos and creating a DataReader or DataWriter.

[RTI Issue ID CORE-15591]