4.15. XML Configuration
4.15.1. [Minor] Setting monitoring.telemetry_data.metrics in a derived profile or using an XML snippet did not override inherited values
When configuring QoS profiles in XML, setting the sequence
monitoring.telemetry_data.metrics in a derived profile—either via a
snippet or by defining the value directly—did not override the inherited
value from the base profile or previously applied snippets. Instead, the
previous sequence values remained in effect (merged behavior).
With this fix, the sequence is now always fully replaced when explicitly defined in a derived profile, whether through a snippet or directly in the profile.
For example:
<qos_library name="MyLibrary">
<qos_profile name="MyBaseProfile">
<participant_factory_qos>
<monitoring>
<telemetry_data>
<metrics>
<element>
<resource_selection>//data_writers/*</resource_selection>
<enabled_metrics_selection>
<element>dds_data_writer_reliable_cache_*</element>
</enabled_metrics_selection>
</element>
</metrics>
</telemetry_data>
</monitoring>
</participant_factory_qos>
</qos_profile>
<qos_profile name="MySnippet">
<?rti-qos_snippet?>
<participant_factory_qos>
<monitoring>
<telemetry_data>
<metrics>
<element>
<resource_selection>//data_writers/MyWriter</resource_selection>
<enabled_metrics_selection>
<element>dds_data_writer_deadline_missed_total</element>
</enabled_metrics_selection>
</element>
</metrics>
</telemetry_data>
</monitoring>
</participant_factory_qos>
</qos_profile>
<qos_profile name="DerivedProfileWithSnippet" base_name="MyBaseProfile">
<base_name>
<element>MyLibrary::MySnippet</element>
</base_name>
</qos_profile>
<qos_profile name="DerivedProfileDirect" base_name="MyBaseProfile">
<participant_factory_qos>
<monitoring>
<telemetry_data>
<metrics>
<element>
<resource_selection>//data_writers/MyWriter</resource_selection>
<enabled_metrics_selection>
<element>dds_data_writer_deadline_missed_total</element>
</enabled_metrics_selection>
</element>
</metrics>
</telemetry_data>
</monitoring>
</participant_factory_qos>
</qos_profile>
</qos_library>
Before the fix, both DerivedProfileWithSnippet and
DerivedProfileDirect contained two entries in the <metrics>
sequence:
//data_writers/*//data_writers/MyWriter
The explicitly defined sequence was merged with the inherited sequence instead of replacing it.
After the fix, both derived profiles now contain only one entry in
the <metrics> sequence:
//data_writers/MyWriter
Any explicitly defined monitoring.telemetry_data.metrics
sequence—whether introduced via a snippet or directly in the derived
profile—fully replaces the inherited values.
This behavior now aligns with Connext’s documented rule that sequences defined in a derived QoS profile replace the corresponding sequences in the base profile.
[RTI Issue ID CORE-16518]