4. What’s New in 7.3.1
This section describes what’s new in the Core Libraries in 7.3.1 compared to release 7.3.0.
Connext 7.3.1 is a maintenance release in the 7.3 long-term support (LTS) series. See Previous Releases for all other new features in 7.3 LTS.
See the Connext Versions and Lifecycle page for more information on RTI’s software release model.
For what’s new and fixed in other products in the Connext suite, see those products’ release notes on https://community.rti.com/documentation or in your installation. Or start with the RTI Connext What’s New for a launchpad to all products.
Note
For backward compatibility information between 7.3.1 and previous releases, see the Migration Guide on the RTI Community Portal (https://community.rti.com/documentation).
4.1. Eliminated requirement to manually clean up thread resources on platforms that support automatic thread-specific storage (TSS) cleanup
This release introduces the ability to automatically clean up thread-specific storage resources used by Connext. This feature is disabled by default. In order to enable it, you must call an API at the beginning of your application before any other Connext API has been called.
This feature is available on all platforms except VxWorks and in all languages except Java.
To ensure that all the resources allocated in a thread are correctly released, you have two options:
Enable automatic thread-specific storage (TSS) cleanup by calling the
enable_automatic_tss_cleanupAPI before any other Connext APIs have been called.Call
unregister_thread()right before exiting the thread.
For more information, see Unregistering Threads in the RTI Connext Core Libraries User’s Manual.
4.2. Extensible Types compliance mask added to all APIs
The Extensible Types compliance mask and its corresponding APIs have been added to the Java, C#, and Python APIs, having previously been only in the C, Traditional C++, and Modern C++ APIs. See Extensible Types Compliance Mask in the Connext Core Libraries Extensible Types Guide for more information.
4.3. New DynamicData APIs to get and set union’s discriminator value
Two new DynamicData APIs have been added that allow getting and setting
a union’s discriminator value: DynamicData::get_discriminator() and
DynamicData::set_discriminator().
Previously, passing index 0 to the
DynamicData::get_member_info_by_index() API returned the
discriminator value for a union in the
DynamicDataMemberInfo::member_id field. This behavior has been
deprecated and the DynamicData::get_discriminator() API should be
used instead.
The DynamicData::set_<type>() APIs used to be the only way to set
the discriminator value, by providing the desired discriminator value as
the member_id. Now, the discriminator value can also be set using
the DynamicData::set_discriminator() API.
See Accessing the Discriminator Value in a Union in the Core Libraries User’s Manual and the API documentation for more information about these APIs and examples of how to use them.
4.4. Improved write execution time when dds.data_writer.history.purge_samples_after_acknowledgment set to 1
This release improves the DataWriter write() execution time and
CPU usage under the following scenario:
The DataWriter enables durable writer history.
The DataWriter is configured with Required Subscriptions.
The DataWriter is configured with dds.data_writer.history.purge_samples_after_acknowledgment set to 1.
The performance improvement is in the writing of live data and is more noticeable when there are many historical samples in the DataWriter queue that are being delivered and acknowledged while the DataWriter is writing live data.
[RTI Issue ID CORE-16039]
4.5. Improved throughput when disable_positive_acks field in DataReaderProtocol QoS policy set to TRUE
This release improves application throughput when there are
DataReaders configured with the disable_positive_acks field in
the DataReaderProtocol QoS policy set to TRUE.
The performance improvement is more noticeable with transient local configurations when there are a large number of samples in the DataWriter queue.
4.7. TCP Transport now uses POLL socket monitoring by default on Linux systems, offering significantly better responsiveness
This release changes the default socket monitoring mechanism for the TCP
Transport on Linux architectures from SELECT to POLL . The new
POLL-based socket monitoring (currently only supported for Linux
architectures) offers significantly better responsiveness when handling
socket events and raises the maximum number of sockets supported by TCP
Transport on Linux architectures from 1024 to 32768 (see related
fix [COREPLG-756] in the Transports section of “What’s Fixed in 7.3.1”).
See socket_monitoring_kind in TCP/TLS Transport
Properties,
in the RTI Connext Core Libraries User’s Manual, for more information.
4.8. Disallow unrealistic values of polling_period, to avoid errors collecting data for Observability Framework
Monitoring Library 2.0 uses the
DDS_MonitoringPeriodicDistributionSettings::polling_period
to periodically poll for new telemetry data to send to RTI
Observability Framework. To avoid internal integer overflows, the
polling_period must now be no more than 4294967 seconds (50 days).
Enabling Monitoring Library 2.0 will no longer succeed if the
polling_period exceeds this value.
4.9. Support for new metadata fields in content filter expressions
This release introduces support for the following new metadata fields in content filter expressions in the SQL filter:
sample_identity.writer_guid.valuesample_identity.sequence_number.lowsample_identity.sequence_number.highsource_guid.value
For example:
@sample_identity.writer_guid.value = &hex(0708090A0B0C0D0E0F10111213141516)
See SQL Filter Expression Notation in the RTI Connext Core Libraries User’s Manual.
4.10. Third-Party Software Changes
The following third-party software used by Connext has been upgraded:
Third-Party Software |
Old Version |
New Version |
|---|---|---|
Expat |
2.6.3 |
2.7.1 |
For information on third-party software used by Connext products, see the “3rdPartySoftware” documents in your installation: <NDDSHOME>/doc/manuals/connext_dds_professional/release_notes_3rdparty.