Skip to content

QosProvider creation issue with empty partition field #557

Description

@dac1976

Following on from previous issues I had with creating a QosProvider from an XML in #549 and #555...

Whilst porting another project to use CycloneDDS using a different QoS XML I was encountering the constructor of QosProvider crashing. Tracked this down to when a subscriber or publisher QoS element has and empty partition defined. For example:

<publisher_qos>
	<presentation>
		<access_scope>INSTANCE_PRESENTATION_QOS</access_scope>
		<coherent_access>false</coherent_access>
		<ordered_access>false</ordered_access>
	</presentation>
	<partition>
		<name/>
	</partition>
	<group_data>
		<value/>
	</group_data>
	<entity_factory>
		<autoenable_created_entities>true</autoenable_created_entities>
	</entity_factory>
</publisher_qos>

This works fine in OpenSplice but with CycloneDDS I catch the following exception:

Dynamic exception type: class dds::core::Error
std::exception::what: Error Error - Unable to create QosProvider.
===============================================================================
Context     : __cdecl org::eclipse::cyclonedds::core::QosProviderDelegate::QosProviderDelegate
Node        : UnknownNode

And in the console output I see:

1761318845.568764 []      24452: Error parsing system definition XML: No parameters set for Partition QoS policy (error code -2, line 86)
1761318845.568851 []      24452: Failed during read sysdef: file://C:/...XXX_qos.xml

If I comment out all the empty partition elements in the XML I no longer get any exceptions and can create the QosProviders as necessary.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions