14.5.2. What’s Fixed in 6.1.1

14.5.2.1. Routing Service Crashed when Running out of Memory

Routing Service may have crashed while creating a Stream Reader if the system ran out of memory. This problem has been resolved.

[RTI Issue ID ROUTING-680]

14.5.2.2. Crash when Attempting to Route Builtin Security Logging Topic or Monitoring Library Topics

Routing the Security Logging builtin topic DDS:Security:LogTopic may have caused a crash if any of the participants involved in the route had security logging enabled (i.e., the property com.rti.serv.secure.logging.mode_mask was set to use the SECURITY_TOPIC option).

Note that you can enable security logging on participants that talk to Routing Service, and even route the Security Logging builtin topic that they use. This problem occurred only if the Routing Service participant itself had security logging enabled.

This issue has been resolved. Routing Service will now warn you about attempts to route any topic previously registered with a type plugin other than the Dynamic Data plugin.

[RTI Issue ID ROUTING-727]

14.5.2.3. Unbounded Memory Growth when Restarting Routing Service or Creating/Deleting DomainRoutes

When using Routing Service as a library, starting and stopping Routing Service instances within the same process may have lead to unbounded memory growth, with a small memory increment every time an instance was stopped.

Creating and deleting DomainRoutes within a Routing Service instance could have also lead to unbounded memory growth, with a small memory increment every time a DomainRoute was deleted.

This issue has been resolved.

[RTI Issue ID ROUTING-833]

14.5.2.4. Missing C++ Header File Caused rti::routing::Logger APIs to not Compile

When using the new APIs for logging in the Routing Service C++ SDK, e.g., rti::routing::Logger::instance().error, you need to include the file rti/routing/Logger.hpp. This file depended on advlog.1.0/hpp/rti/advlog/Context.hpp, which was not being shipped. This issue has been resolved.

[RTI Issue ID ROUTING-839]

14.5.2.5. Samples not Routed if Memory Management ‘sample_buffer_trim_to_size’ and ‘sample_buffer_min_size’ Set

If the memory_management sample_buffer_trim_to_size was true and sample_buffer_min_size was less than 8, then samples would not be routed on that route. The failure to deserialize the samples was accompanied by errors such as the following:

REDAInlineMemory_new:invalid initial size, should be larger than
the minimal size: 96
DDS_DynamicData2TypePlugin_deserialize:ERROR:
Failed to create DynamicData memory manager

The issue has been resolved and setting sample_buffer_trim_to_size and sample_buffer_min_size will work as expected.

[RTI Issue ID ROUTING-845]

14.5.2.6. Using ‘Ctrl+C’ to Shut Down Examples did not Work as Expected

When using Ctrl+C to shut down some of the Routing Service examples, the shut down process was abrupt and didn’t clean up properly. This issue has been resolved.

[RTI Issue ID ROUTING-858]

14.5.2.7. Incorrect Content Filtering and ‘RTICdrTypeCodeUtils_type_has_external_members:!get member’ Error

You may have seen the following error when using Routing Service:

RTICdrTypeCodeUtils_type_has_external_members:!get member

The error was harmless unless you were using ContentFilteredTopics on some of the DataReaders communicating with Routing Service. In this case, Routing Service may have evaluated the filter incorrectly. Samples that should have passed the filter(s) may not have passed, and vice versa. This problem has been resolved.

[RTI Issue ID ROUTING-863]

14.5.2.8. Routing Service Remote Shell: Adding to Initial Peers List did not Work, Possible Segmentation Fault

Using the Routing Service remote shell, rtirssh, with the add_peer command to add a peer to a DomainParticipant’s initial peers list did not work properly. It may also have caused a segmentation fault. This issue has been resolved.

[RTI Issue ID ROUTING-879]

14.5.2.9. Routing Service Crashed when Same ‘-Dname=value’ Pair Provided Twice

When launching Routing Service and using the -Dvar=value command-line option to provide values for XML configuration variables, repeating the same variable twice in the command may have caused a crash.

For example, this command included -DPUBLIC_ADDRESS=10.10.10.1 twice:

>c:\Rti\rti_connext_dds-6.1.0\bin\rtiroutingservice.bat
  -cfgFile rti_rs_example_tcp_wan.xml -cfgName WanGateway
  -appName GatewaySiteA -DPUBLIC_ADDRESS=10.10.10.1 -DBIND_PORT=10
  -DREMOTE_RS_PEER=1 -DLAN_DOMAIN_ID=2 -DPUBLIC_ADDRESS=10.10.10.1

This problem has been resolved. If the same name/value pair is provided more than once, Routing Service no longer crashes and the last value in the command prevails.

[RTI Issue ID ROUTING-881]

14.5.2.10. Crash when Routing Service from LM Bundle did not Find License File

If you ran Routing Service from an LM bundle and it could not find a license file, the service issued a segmentation fault. This problem has been resolved.

[RTI Issue ID ROUTING-906]

14.5.2.11. Routing Service Crashed when XML Configuration had Duplicate Names

Duplicate names in an XML configuration caused Routing Service to crash. For example, this configuration has duplicate names:

...
<session name="A">
    ...
    <auto_topic_route name="A">
    ...

This problem has been resolved.

[RTI Issue ID ROUTING-914]

14.5.2.12. Large Per Sample Memory Usage in Routing Service

Routing Service had a large out-of-the-box large memory usage. There was 64k bytes of memory allocated per sample, even if the sample’s maximum serialized size was smaller than that value. This resulted in a large amount of unnecessary and unused memory allocations.

You could have worked around this problem by using the memory_management settings in the Routing Service configuration. For example:

<memory_management>
    <sample_buffer_min_size>1200</sample_buffer_min_size>
</memory_management>

The sample_buffer_min_size sets the size of preallocated buffers used to pass samples through Routing Service. If more space is needed, it is dynamically allocated as samples are received. The sample_buffer_min_size should be set to a value greater than or equal to the minimum serialized size of a type. If it is set to a value greater than the maximum serialized size of a type, the maximum will be used to allocate the buffers, instead of the configured value.

The issue of excessive memory usage has been resolved and buffers will never be allocated that are larger than the maximum serialized size for a type.

[RTI Issue ID ROUTING-938]