.. include:: vars.rst .. _section-release-notes: Release Notes ============= Supported Platforms -------------------- |RTI_RS| is supported on the platforms in :numref:`TableSupportedPlatforms`. It can also be deployed as a C library linked into your application. This is true for all platforms in :numref:`TableSupportedPlatforms` except INTEGRITY®. .. list-table:: Supported Platforms :name: TableSupportedPlatforms :widths: 20 80 :header-rows: 1 * - Platform - Operating System * - INTEGRITY - INTEGRITY 10.0.2 and 11.0.4 on x86 CPU. Does not include TCP/IPv4 transport plugin. Implemented as a static C library. * - Linux® - All Linux platforms in the *RTI Connext DDS Core Libraries Release Notes* for the same version number. * - macOS® - All macOS platforms in the *RTI Connext DDS Core Libraries Release Notes* for the same version number. * - QNX® - All QNX Neutrino® 7.0.4 platforms in the *RTI Connext DDS Core Libraries Release Notes* for the same version number. * - Windows® - All Windows platforms in the *RTI Connext DDS Core Libraries Release Notes* for the same version number. Note: POSIX-compliant architectures that end with "FACE_GP" are not supported. |RS| is also supported on the platforms in :numref:`TableCustomPlatforms`; these are target platforms for which RTI offers custom support. If you are interested in these platforms, please contact your local RTI representative or email sales@rti.com. .. list-table:: Custom Platforms :name: TableCustomPlatforms :widths: 20 80 :header-rows: 1 * - Platform - Operating System * - Linux - Wind River Linux 8 on Arm® v7. * - - Yocto Project 2.5 on Arm v8. * - QNX - QNX Neutrino 6.5 on PPC e500v2. Does not include TCP/IPv4 transport plugin. * - - QNX Neutrino 7.0.4 on Arm v7 (armv7QNX7.0.0qcc_cxx5.4.0). Compatibility ------------- For backward compatibility information between |RS| 6.1.0 and previous releases, please see the *Migration Guide* on the `RTI Community portal `_. |RS| can be used to forward and transform data between applications built with |CONNEXT|, as well as *RTI Data Distribution Service* 4.5[b-e], 4.4d, 4.3e, and 4.2e except as noted below. - |RS| is not compatible with applications built with *RTI Data Distribution Service* 4.5e and earlier releases when communicating over shared memory. For more information, please see the Transport Compatibility section in the *Migration Guide* on the `RTI Community portal `_. - Starting in |CONNEXT| 5.1.0, the default ``message_size_max`` for the UDPv4, UDPv6, TCP, Secure WAN, and shared-memory transports changed to provide better out-of-the-box performance. |RS| also uses the new value for ``message_size_max``. Consequently, |RS| is not out-of-the-box compatible with applications running older versions of |CONNEXT|. Please see the *RTI Connext DDS Core Libraries Release Notes* for instructions on how to resolve this compatibility issue with older |CONNEXT| applications. - The types of the remote administration and monitoring topics in 5.1.0 are not compatible with 5.0.0. Therefore: - The 5.0.0 *RTI Routing Service* shell, *RTI Admin Console* 5.0.0, and *RTI Connext DDS* 5.0.0 user applications performing monitoring/administration are not compatible with *RTI Routing Service* 5.1.0. - The 5.1.0 *RTI Routing Service* shell, *RTI Admin Console* 5.1.0, and *RTI Connext DDS* 5.1.0 user applications performing monitoring/administration are not compatible with *RTI Routing Service* 5.0.0. What's New in 6.1.0 ------------------- New platforms ^^^^^^^^^^^^^ - macOS 10.15 (x64) - QNX Neutrino 7.0.4 (Arm v7) (custom-supported target platform) - Red Hat® Enterprise Linux 7.6 (x64) - Ubuntu® 18.04 LTS (Arm v7 and v8) - Ubuntu 20.04 LTS (x64) - Yocto Project 2.5 (Arm v8) (custom-supported target platform) For more information on these platforms, see the *RTI Connext DDS Core Libraries Platform Notes* for this release. Removed platforms ^^^^^^^^^^^^^^^^^ These platforms are no longer supported: - macOS 10.12 - SUSE Linux Enterprise Server 11 - Ubuntu 12.04 LTS Improved behavior if –verbosity set above the allowed maximum ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-303 Setting the command-line option ``-verbosity`` higher than the maximum, which is 6, will now be treated as if set to the maximum. Previously, using a higher value resulted in a lower verbosity than expected. Service monitoring now reports CPU usage for individual Session threads ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-563 Service monitoring now includes CPU usage for each thread in a Session’s thread pool. A new optional member has been added to the SessionPeriodic type that includes a sequence of CPU usage for each thread in a Session's thread pool. Extended command-line parameter -verbosity to specify service and DDS verbosity independently ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-592 |RS|'s ``-verbosity`` command-line parameter now allows you to specify separate verbosity levels for service and DDS logs. For example, you can specify the verbosity as ``-verbosity WARN:EXCEPTION``. This will set the verbosity to warning level for service logs and exception level for DDS logs. For more information about ``-verbosity``, see :ref:`section-routing-service-command-line-parameters` or run the executable with the ``-help`` option (``rtiroutingservice -help``). New command-line option to save log in a file ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-599 |RS| has a new command-line option, ``-logFile ``, that will save its log in a file. New message logging API, integrated with service logging system ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-612 The |RS| SDK has a new message logging API that is integrated with the service's logging system. Messages logged with this API will be interpreted as if they were generated by the service itself. This means these messages can be sent with Distributed Logger and the logging settings will apply to them as well. The new API is available in C and C++. In C: .. code-block:: C void RTI_RoutingServiceLogger_log( NDDS_Config_LogLevel log_level, const char *format, ...); In C++, the ``rti::routing:::Logger`` class has been extended with operations to log a message for each log level: .. code-block:: C++ void :error(const std::string& msg); void warn(const std::string& msg); ... You can use the new API to log messages from custom Adapters, Processors, Transformations, and applications embedding a service with the Service API. Using this API requires linking against the service library. New APIs to get/set DynamicType from/in StreamInfo object ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-631 The |RS| C++ SDK has new APIs to get/set a DynamicType from/in a TypeInfo. The APIs have the following signature: .. code-block:: C++ const dds::core::xtypes::DynamicType& TypeInfo::dynamic_type() const; void dynamic_type(const dds::core::xtypes::DynamicType *dynamic_type); You can use these APIs to develop Adapters, Processors, and Transformations. Ability to define default values for variables in XML configuration ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-654 In previous versions, XML variables expressed in the form ``$(MY_VAR)`` were expanded by obtaining values from the process environment of the ``ServiceProperty::user_environment``. Loading the configuration failed if a variable was not defined by any of these means. To allow you to assign default values to the XML variables, a new ```` element is allowed within the ```` root tag, as follows: .. code-block:: XML MY_VAR my default value The specification of ```` must appear before a variable is used. The default value will be used if no other value is found from the aforementioned means. Additionally, for convenience you can specify ```` in a separate file (that appears first in the file loading order). Removed duplicate symbols in rtirsinfrastructure and rtiroutingservice libraries ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-676 The libraries ``rtirsinfrastructure`` and ``rtiroutingservice`` included multiple duplicate symbols. This caused a warning in applications that linked against both of them. This problem has been resolved. Enhanced logging information for each written sample ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-678 |RS| will include additional logging information for each sample that is written to a DDS output. The information includes the Writer GUID and Sequence Number. For example: .. code-block:: console [/routing_services/MyRouter/domain_routes/DomainRoute/sessions/MySessions/routes/MyRoute] write: {GUID: {1020304 5060708 1020304 5060708}, SN : {0, 1}} The additional information can only be obtained when using CONTENT verbosity. Register type and content filter tags now consistent with DDS-XML specification ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-685 The tags ```` and ```` have been modified to match the specification of the DDS-XML standard: * ```` has been renamed to ```` and there are changes to its possible attributes and elements. * The possible attributes and elements for ```` have changed. The previous values are still allowed, but a warning will be displayed. Future versions will fail if the old tags are still present. Periodic event is now configurable individually per Route ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-700 A periodic event can be individually enabled and configured for each Route as follows: .. code-block:: xml 0 400000000 This setting overrides the one specified in the ````. The ```` is still supported and allows you to define a default value for all contained routes. The new functionality has also been applied to the Processor API, so the ``Route::period()`` operation only affects the Route object and not the parent Session. Make sure your application is updated accordingly if these changes affect it. Added LoanedSamples::has_infos() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-733 A new operation has been added to the LoanedSamples in the Processor API with the following signature: .. code-block:: C++ bool LoanedSamples::has_infos() The new operation returns whether the underlying Input can read Samples that contain SampleInfo objects. This information can help Processor implementations to be robust to any underlying Adapter implementation. New API to get a Route's name, Route::full_name ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-734 There is a new operation in the Route class that returns its fully qualified name, derived from the configuration. The operation has the following signature (in C++): .. code-block:: C++ const std::string& std::string Route::full_name() const; Increased verbosity for log message "ROUTERDdsConnection_assertType:two different type definitions..." ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-740 |RS| logged the following message with a WARNING verbosity: .. code-block:: console ROUTERDdsConnection_assertType:two different type definitions with the same name () were found But this problem could occur if different extended versions of a type were received. Therefore, the verbosity has changed to the highest possible value (DEBUG). Support for Input Transformation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-743 An Input can now include a pluggable Transformation. The configuration is similar to an Output. For example: .. code-block:: xml ... ... Several improvements in monitoring and administration infrastructure ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-744 *Routing Service's* monitoring and administration infrastructure has been improved with the following additions: * Monitoring and Administration types are available in XML format too. You can find them under ``/resource/xml``. * Monitoring and Administration can share a participant. The new tag ```` under ```` configures this behavior. * Monitoring and Administration data can be routed from the same |RS| instance. New XML element to wait for acknowledgment ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-757 When routing large samples, |RS| may have shut down before a subscribing app received all the samples. You can avoid this by using the new ```` tag. Ability to disable data on inputs event within routes/auto routes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. ROUTING-761 (Topic)Routes and Auto(Topic)Routes can now be configured to disable notification of data on inputs events. For example, the following XML disables this event: .. code-block:: xml false This configures the route so that the processor will not receive notifications of new data. Therefore another mechanism to process data is required, such as enabling a periodic event. What's Fixed in 6.1.0 --------------------- Operations expecting a string URL failed in Java Service-related APIs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The Java Service-related API operations that could receive a string URL in the form ``str://``, such as ``createEntity()`` and ``updateEntity()`` failed, even if the provided URL was correct. An example of the logged error is shown below: .. code-block:: console line 1: Entity: line 1: line 1: parser line 1: error : line 1: Document is empty line 1: str://"`` * ```` * ```` * ```` For example: .. code-block:: xml A Topic, B Topic, Other Topic This problem has been resolved. Now allow/deny filters can include whitespaces and new-line characters. [RTI Issue ID ROUTING-617] |RS_HEADING| crashed if monitoring participant creation failed ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |RS| may have crashed during initialization if the monitoring participant creation failed. This problem has been resolved. [RTI Issue ID ROUTING-666] Possible segmentation fault after failure to create Adapter Session, StreamReader, or StreamWriter ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If there was a failure creating an Adapter Session, StreamReader, or StreamWriter, this may have resulted in a segmentation fault. This behavior was timing dependent and only occurred if multiple Sessions were defined within a DomainRoute. This problem has been resolved. [RTI Issue ID ROUTING-679] Assertion failed while reading data from an Input on Windows platform ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ A Processor running in debug mode caused an assertion failure when reading data from an input on Windows platforms. This problem has been resolved. [RTI Issue ID ROUTING-687] -convertLegacyXml option failed on Windows systems if no output path specified ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The ``-convertLegacyXml`` option failed on Windows systems if an output path was not specified. This problem has been resolved. [RTI Issue ID ROUTING-710] Report of aggregated monitoring statistics contained invalid data ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The monitoring metrics that |RS| computes and reports may have contained invalid and incoherent values for statistics that were represented as aggregations of other variables (e.g., throughput for a Session). This report of invalid values was caused by a very rare race condition. This problem has been resolved. [RTI Issue ID ROUTING-716] Error re-enabling a route that was updated while disabled ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ A Route that contained at least one input or output with no QoS tag could not be disabled and re-enabled with remote administration. This problem has been resolved. [RTI Issue ID ROUTING-725] rtirssh crashed if load command was sent ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The |RS| remote shell, ``rtirssh`` crashed if a load command was sent. This problem has been resolved. [RTI Issue ID ROUTING-773] Unexpected "DDS_SqlTypeSupport_deserialize_Union:!deserializing union type" exception ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |RS| may have generated the following exception when sending or receiving samples: .. code-block:: console DDS_SqlTypeSupport_deserialize_Union:!deserializing union type This condition only occurred in routes with a type containing unions, and only when ``/`` was finite (not LENGTH_UNLIMITED). In addition, any of these conditions had to be true: * ```` was configured. * The route's DataWriter QoS was configured to enable TopicQueries. * The route's DataWriter(s) matched with a DataReader created on a ContentFilteredTopic. This problem has been fixed. [RTI Issue ID ROUTING-781] Crash when publishing a stream with different type names and using auto-route with monitoring ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Using an auto_route with monitoring enabled lead to a crash if you published data on the same stream name (topic for DDS domains) with multiple type name definitions. In general, it is not advised to have multiple type definitions for the same stream when dealing with auto_routes, since that can lead to creation of routes with mismatched streams discovered on the input and output side. This problem has been resolved and the crash will no longer occur. [RTI Issue ID ROUTING-798] Segmentation fault when attempting to enable a session with a disabled parent domain route ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |RS| terminated with a segmentation fault if you attempted to remotely enable a disabled Session that also had a disabled parent Domain Route. This issue has been resolved. [RTI Issue ID ROUTING-789] QoS Profiles in NDDS_QOS_PROFILES.xml were not loaded ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ In previous releases, the file NDDS_QOS_PROFILES.xml was not loaded, due to an incorrect path in the code. This problem has been resolved. Now if this file exists, it will be properly loaded and you can refer to the file's QoSs or QoS Profiles in your |RS| XML configuration. [RTI Issue ID ROUTING-811] Unnecessary network bandwidth for participant announcements generated by |RS_HEADING| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ In previous releases, the DomainParticipant created by |RS| generated RTPS DATA(P) messages larger than necessary due to the addition of a property called dds.content_filter.sql.deserialized_sample.min_buffer_size. This issue has been fixed and the DATA(P) messages no longer contain this property. [RTI Issue ID ROUTING-813] Known Issues ------------ Attempting to route builtin Security Logging topic causes |RS_HEADING| crash ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Routing the Security Logging builtin topic (``DDS:Security:LogTopic``) causes a crash if any of the participants involved in the route have security logging enabled (i.e., the ``property com.rti.serv.secure.logging.distribute.enabled`` is set to true). Note that you can enable security logging on participants that talk to |RS| and even route the Security Logging builtin topic that they use. This problem occurs only if the |RS| participant itself has security logging enabled. [RTI Issue ID ROUTING-727]