5.2.1. RTI Connext Core Libraries

The following issues affect backward compatibility in the Core Libraries starting in release 7.3.1. Issues in the Core Libraries may affect components that use these libraries, including Infrastructure Services and Tools.

5.2.1.1. socket_monitoring_kind default changed to POLL

In previous releases, the TCP Transport was not properly enforcing 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. This issue has been fixed in 7.3.1; see COREPLG-756.

As part 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. The socket_monitoring_kind default (see TCP/TLS Transport Properties, in the RTI Connext Core Libraries User’s Manual) has also changed to POLL, to avoid scalability issues.

If you previously explicitly set socket_monitoring_kind to the old default, SELECT, and you now exceed the new, lower limits, you will experience errors, potentially preventing communication. (The previous maximum expected limits for SELECT were 32768 for the maximum number of sockets and 32767 for the maximum socket ID, although typically the runtime system limits are much lower.) The errors will look similar to the following:

NDDS_Transport_TCP_SocketGroup_xxxxxx:invalid <operation> socket (<socket_id>) higher than the maximum accepted value (1024)

If you experience this error, either explicitly set socket_monitoring_kind to POLL, or, preferably, make sure socket_monitoring_kind is not set, so that the default is used: POLL for Linux systems, WINDOWS_IOCP for Windows systems, and SELECT for other systems. The new limits for POLL are 32768 for the maximum number of sockets and 32767 for maximum socket ID.