XML QoS File woes

2 posts / 0 new
Last post
Offline
Last seen: 1 week 3 days ago
Joined: 03/12/2018
Posts: 32
XML QoS File woes

I have a QoS XML file that defines a library CustomLibrary, loaded by an application that links against an unknown DDS library version (I downloaded armv8Linux4.4gcc5.4.0 package, and it contains libraries that I link against).  

I'd like to have a consistent XML QoS file that lives in /etc/USER_QOS_PROFILES.xml, and an optional spare that would override it.  This lives in a mountable location /run/media/mmcblk0p1/USER_QOS_PROFILES.xml.  I'd like the latter to take precedence, if present. 

(the reason for this is that the root filesystem is a fixed embedded image does not allow changes.  however there is an sdcard attached that can hold persistent files, and we might want to make medium-term changes as we experiment with QoS.

Therefore, I give my QosProvider constructor the 

string: std::string("file:///run/media/mmcblk0p1/USER_QOS_PROFILES.xml | file:///etc/USER_QOS_PROFILES.xml")

(I got this from: https://community.rti.com/static/documentation/connext-dds/5.2.3/doc/manuals/connext_dds/RTI_ConnextDDS_CoreLibraries_UsersManual.pdf, section 17.8 URL Groups, where it talks about concatenating strings separated by "|")

I can start and stop my application and things work fine when the xml file is in /etc.

However, when I delete my QoS profile in /etc to try to get it to load the one in /run/media/mmcblk0p1, I get a failure.

root@xilinx-zcu102-2017_3:/etc# mv USER_QOS_PROFILES.xml USER_QOS_PROFILES.xml_tmp
root@xilinx-zcu102-2017_3:/etc# rx -d 0 -b
DDS_QosProvider_load_profiles_from_url_groupI:ERROR: opening profiles group files 'file:///run/media/mmcblk0p1/USER_QOS_PROFILES.xml | file:///etc/USER_QOS_PROFILES.xml'
DDS_QosProvider_load_profiles_from_url_sequenceI:ERROR: loading profiles
DDS_QosProvider_load_profiles_from_policyI:ERROR: loading profiles
DDS_QosProvider_load_profilesI:ERROR: loading profiles
rxmain: Exception running producer: reload profiles
rxmain: Done.
Got EXIT.
root@xilinx-zcu102-2017_3:/etc# ls -l /run/media/mmcblk0p1/USER_QOS_PROFILES.xml
-rwxrwx--- 1 root disk 8745 Sep 13 14:57 /run/media/mmcblk0p1/USER_QOS_PROFILES.xml

Obviously my goals are unreasonable, or my string format is incorrect.   How should I accomplish my goal, if it is possible?

However, I think it must be partially correct because DDS's parser is able to get the QoS file path from the second part of the string.

It may be that DDS is getting some file information, because I notice that if I put the file back in /etc/ I still get an error, but this one is different.  It's the same file that was gone, and is now present, but somehow, DDS is trying to add it as a duplicate library

 

root@xilinx-zcu102-2017_3:/etc# rx -d 0 -b
RTIXMLObject_addChild: XML object with name '::CustomLibrary::Receiver.Common' already exists
RTIXMLParser_onStartTag:Parse error at line 14: XML object could not be added to the DOM
RTIXMLParser_parseFromFile_ex:Parse error in file '/etc/USER_QOS_PROFILES.xml'
DDS_XMLParser_parse_from_file:Error parsing file
DDS_QosProvider_load_profiles_from_urlI:ERROR: loading profiles file '/etc/USER_QOS_PROFILES.xml'
DDS_QosProvider_load_profiles_from_url_groupI:ERROR: loading profiles
DDS_QosProvider_load_profiles_from_url_sequenceI:ERROR: loading profiles
DDS_QosProvider_load_profiles_from_policyI:ERROR: loading profiles
DDS_QosProvider_load_profilesI:ERROR: loading profiles
rxmain: Exception running producer: reload profiles
rxmain: Done.
Got EXIT.

Gerardo Pardo's picture
Offline
Last seen: 3 weeks 3 days ago
Joined: 06/02/2010
Posts: 588

Hi,

Looking at that section of the manual you referenced (17.8 URL Groups) it seems like the list of files needs to be enclosed in square brackets '[', ']'.

Something like this:

string std::string("[file:///run/media/mmcblk0p1/USER_QOS_PROFILES.xml|file:///etc/USER_QOS_PROFILES.xml]")
 Could you give that a try and see if it solves the problem?
 
-Gerardo